Breaking changes to jsondecode between 2018a and 2018b?
6 ビュー (過去 30 日間)
古いコメントを表示
Problem: The same code and files that worked for jsondecode in 2018a and earlier stopped working in 2018b and beyond.
Exception: JSON text must be a character vector or a scalar non-missing string.
The attached article.txt file was written by
json = jsonencode(structObj);
fID = fopen('./data/article.txt', 'w', 'n', 'UTF-8');
fwrite(fID, json, 'char');
fclose(fID);
I have attempted to read it back in by:
fileName = './data/article.txt';
fID = fopen(fileName, 'r', 'n', 'UTF-8');
readIn = native2unicode(fread(fID), 'UTF-8');
value = jsondecode(readIn);
fclose(fID);
This works in 2018a but throws the exceptions at the jsondecode line in 2018b and later
0 件のコメント
採用された回答
Walter Roberson
2019 年 7 月 19 日
readIn = native2unicode(fread(fID, [1 inf]), 'UTF-8');
That is, you were trying to send a column vector to jsondecode and it needs to be a row vector.
2 件のコメント
Walter Roberson
2019 年 7 月 19 日
Sorry, I do not have any reference. The input is documented in R2018a as "character vector" and in MATLAB documentation that has always meant character row vector, with N x 1 being called a character array.
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で JSON Format についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!