我正试图在要从文本文件读取的给定数据上创建图形的点。
因此,我在代码中使用 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来说应该可以!!
答案 0 :(得分:0)
在json_str
中,您的开头和结尾都有引号"
。需要删除这些内容以使jsondecode
起作用。例如J = jsondecode(json_str{1}(2:end-1))
。
然后可以使用cellfun
处理所有元素。例如,
S = cellfun(@(x)jsondecode(x(2:end-1)),json_str)