使用jsondecode时的多余文字

时间:2018-11-14 18:12:50

标签: matlab

我正试图在要从文本文件读取的给定数据上创建图形的点。
因此,我在代码中使用 fopen 打开文本文件,使用 textscan 进行扫描,而不是使用 split 来创建字符串。我想剪切每行的第一部分并使用第二部分,以便可以将其解码到json中,然后使用信息。
因此,我的文本文件包含两行信息:

  

123456.99 ::工作完成:result = 0,数据=“ {” day“:” monday“,” breakfast“:” sandwich“}”   123456.99 ::工作完成:result = 0,数据=“ {” day“:”星期二“,”早餐“:”面包“}”

我的代码的第一部分:

fileID  = fopen('test1');
text = textscan(fileID, '%s', 'delimiter','\n','whitespace','');
strLog = string(text{1});
res = split(strLog, "data =");
json_str = res(:, 2)  

结果,我得到了一个2x1的字符串数组。输出:

  

json_str =

     

2×1字符串数组

""{"day":"monday", "breakfast":"sandwich"}""
""{"day":"tuesday", "breakfast":"bread"}""

这就是我被困住的地方。
我的第一个想法是调用 cellfun 并应用 jsondecode 。 但是我得到了

  

在第1行第4列使用jsondecode JSON语法错误   (字符4):多余的文字。

但这对我没有意义,因为那应该是“ day”的“ from”,对于json来说应该可以!!

1 个答案:

答案 0 :(得分:0)

json_str中,您的开头和结尾都有引号"。需要删除这些内容以使jsondecode起作用。例如J = jsondecode(json_str{1}(2:end-1))

然后可以使用cellfun处理所有元素。例如,

S = cellfun(@(x)jsondecode(x(2:end-1)),json_str)