Дополнительный текст при использовании jsondecode - PullRequest
0 голосов
/ 14 ноября 2018

Я пытаюсь прийти к точке, в которой я создаю график для данных, которые я должен прочитать из текстового файла.
Поэтому я использую в своем коде fopen , чтобы открыть текстовый файл, textcan , чтобы сканировать его, затем сделать из него строку и, используя split , я хочу вырезать первую часть каждой строки и использовать вторую часть, чтобы я мог декодировать его в json и затем использовать информацию.
Итак, мой текстовый файл состоит из двух строк информации:

123456.99 :: работа завершена: результат = 0, данные = "{" день ":" понедельник "," завтрак ":" сэндвич "}" 123456,99 :: работа завершена: результат = 0, данные = "{" день ":" вторник "," завтрак ":" хлеб "}"

Первая часть моего кода:

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

И в результате я получаю массив строк 2х1. Выход:

json_str =

2 × 1 строковый массив

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

Вот где я застрял.
Моей первой идеей было вызвать cellfun и применить jsondecode . Но я получил

Ошибка при использовании синтаксической ошибки JSONdecode JSON в строке 1, столбец 4 (символ 4): дополнительный текст.

Но это не имеет никакого смысла для меня, так как это должно быть "от" дня, который для json должен быть в порядке!?

1 Ответ

0 голосов
/ 14 ноября 2018

В json_str у вас есть кавычки " в начале и в конце.Их нужно удалить, чтобы jsondecode заработал.Например, J = jsondecode(json_str{1}(2:end-1)).

Затем можно использовать cellfun для обработки всех элементов.Например,

S = cellfun(@(x)jsondecode(x(2:end-1)),json_str)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...