2016-07-28 4 views
0

У меня есть специальная платформа, на которой я загружаю файлы. Платформа получает содержимое файлов (сопоставление), а затем у меня есть экран, на котором я могу видеть содержимое.Прочтите файл JSON в другом формате

Моя проблема связана с конкретным файлом JSON. Это исходный формат:

{"schema:actor:image":"https://LINK.png","schema:activity.timestamp:timestamp":"01/06/2016 19:23:01","schema:metadata:datatype":"text","schema:actor:name":"AAAA","schema:metadata.tags:key":null,"schema:activity.content:value":"VALUE1","schema:activity.content:language":["english"],"schema:activity.location:placename":"City of London, United Kingdom","schema:actor:followers_count":1518,"schema:activity.content:sentiment":"positive","schema:activity.content:opinion":"neutral","schema:activity.content:gender":"unknown","schema:activity.content:age":"35-49","schema:actor:synthetic":"no","schema:activity:original_post":null,"streams":["Apollo"]} {"schema:actor:image":"https://LINK2.jpg","schema:activity.timestamp:timestamp":"02/06/2016 23:16:39","schema:metadata:datatype":"text","schema:actor:name":"BBBB","schema:metadata.tags:key":null,"schema:activity.content:value":"VALUE2","schema:activity.content:language":["english"],"schema:activity.location:placename":"Birmingham, United Kingdom","schema:actor:followers_count":28,"schema:activity.content:sentiment":"neutral","schema:activity.content:opinion":"subjective","schema:activity.content:gender":"unknown","schema:activity.content:age":"25-34","schema:actor:synthetic":"no","schema:activity:original_post":"738022479273454944","streams":["Apollo"]} 

И я не могу использовать этот файл на платформе. Единственный способ заставить его работать - немного изменить формат. Этот формат работа:

[{"schema:actor:image":"https://LINK.png","schema:activity.timestamp:timestamp":"01/06/2016 19:23:01","schema:metadata:datatype":"text","schema:actor:name":"AAAA","schema:metadata.tags:key":null,"schema:activity.content:value":"VALUE1","schema:activity.content:language":["english"],"schema:activity.location:placename":"City of London, United Kingdom","schema:actor:followers_count":1518,"schema:activity.content:sentiment":"positive","schema:activity.content:opinion":"neutral","schema:activity.content:gender":"unknown","schema:activity.content:age":"35-49","schema:actor:synthetic":"no","schema:activity:original_post":null,"streams":["Apollo"]}, 
{"schema:actor:image":"https://LINK2.jpg","schema:activity.timestamp:timestamp":"02/06/2016 23:16:39","schema:metadata:datatype":"text","schema:actor:name":"BBBB","schema:metadata.tags:key":null,"schema:activity.content:value":"VALUE2","schema:activity.content:language":["english"],"schema:activity.location:placename":"Birmingham, United Kingdom","schema:actor:followers_count":28,"schema:activity.content:sentiment":"neutral","schema:activity.content:opinion":"subjective","schema:activity.content:gender":"unknown","schema:activity.content:age":"25-34","schema:actor:synthetic":"no","schema:activity:original_post":"738022479273454944","streams":["Apollo"]}] 

Разница в картине здесь (дополнения в красном цвете):

enter image description here

Есть ли способ, чтобы прочитать первый файл, используя JSONpath? Я не знаком с JSONpath, и я не смог прочитать первый файл.

В качестве альтернативы, я собираюсь манипулировать файлом, чтобы добавить недостающие части ->, чтобы он выглядел как второй файл.

+0

Ваш первый файл неправильный JSON. –

+0

Чтобы уточнить, попробуйте скопировать в вашу проблемную строку JSON в онлайн-инструмент JSON Parser, например http://json.parser.online.fr/. Он скажет, что ваша строка JSON недействительна, и вам нужно будет исправить строку, чтобы ее правильно разобрать/прочитать. – reidzeibel

+0

@lord_t Дело в том, что многие API-интерфейсы в Интернете имеют этот формат –

ответ

2

Проблема с вашим первым JSON заключается в том, что вы передаете несколько объектов {}, разделенных запятыми, но вы не включаетесь в другой объект или массив [].

{},{},{} === bad formed JSON, three orphan objects 

{ "obj1": {}, "obj2": {}, "obj3": {} } === good JSON, one object that encloses three other objects into it's attributes 

[ {}, {}, {} ] === good JSON, an array of JSON objects. 
+1

, но первый json даже не имеет запятых для разделения двух объектов: D – reidzeibel

+0

@Bardo. Дело в том, что многие API имеют этот формат в файле JSON. Как это возможно? Есть ли способ использовать JSONpath и изменить формат? –

+0

@ApoloRadomer Каждый отдельный объект {} в вашем формате является допустимым значением JSON, вы можете разделить свой вход и работать с ними как отдельные объекты. – Bardo

Смежные вопросы