:: Visual Foxpro, Foxpro for DOS
nfjsonread
sss_007
Автор

Сообщений: 6
Откуда: Королёв
Дата регистрации: 19.09.2019
Здравствуйте.

Пытаюсь с помощью nfjsonread разобрать json файл. Так же как делают это тут: stackoverflow.com.
Но получаю ошибку. Скан приложен. Так как совсем недавно начал изучать vfp не могу понять как это исправить.

Заранее спасибо за помощь.
Ratings: 0 negative/0 positive
Re: nfjsonread
ssa

Сообщений: 13007
Откуда: Москва
Дата регистрации: 23.03.2005
sss_007
Пытаюсь с помощью nfjsonread разобрать json файл. Так же как делают это тут: stackoverflow.com.
И делаешь это, разумеется, совершенно правильно и потому нет никакого смысла свои попытки показывать. Мы сами должны догадаться что и как ты там делаешь.
Цитата:
Но получаю ошибку. Скан приложен.
1. Это не скан. 2. Для трех слов делать скриншот... Хотя спасибо что хоть не фотка экрана с телефона...
Цитата:
Так как совсем недавно начал изучать vfp не могу понять как это исправить.
Показать как обрабатываемый файл, так и код его обработки с указанием на какой строке выскакивает ошибка.

------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: nfjsonread
sss_007
Автор

Сообщений: 6
Откуда: Королёв
Дата регистрации: 19.09.2019
Файл который пытаюсь обработать приложен. Сделать это пытаюсь с помощью следующего кода:
outjson=nfjsonread(Filetostr('F:\data\req.json'))
Create Cursor FromJSON ("status" c(36), "result" i)
For Each Doc In outjson.data
Insert Into FromJSON From Name Doc
Next

Ошибка выскакивает тут:
For Each Doc In outjson.data
Ratings: 0 negative/0 positive
Re: nfjsonread
PaulWist

Сообщений: 14618
Дата регистрации: 01.04.2004
1. Где файл?

2. В файле req.json присутствует объект DATA?


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/1 positive
Re: nfjsonread
sss_007
Автор

Сообщений: 6
Откуда: Королёв
Дата регистрации: 19.09.2019
Действительно в файле не было объекта DATA. Разобрался. Спасибо)
Ratings: 0 negative/0 positive
Re: nfjsonread
sss_007
Автор

Сообщений: 6
Откуда: Королёв
Дата регистрации: 19.09.2019
Свою задачу по разбору json я решил, но возник вопрос с которым хотелось бы разобраться для себя. Json который я разбирал имеет вид:
{"data":[{"value":"test", "value1":"test1"}]}
Но json может быть более сложным:
{"data":[{"value":[{"value2":"test2", "value3":"test3"}], "value1":"test1"}]}
В первом случае при использовании nfjsonread я получал array, данные из которого записывал в курсор.
Во втором случае при использовании nfjsonread я получал array и value1 могу записать в курсор, а value имеет тип object и в курсор его записать на сколько я понимаю не получится.
Хотел бы понять как действовать в этом случае. Возможно ли разобрать более сложный json с помощью nfjsonread, если можно то как? Или нужно использовать какую-то другую библиотеку?
Ratings: 0 negative/0 positive
Re: nfjsonread
of63

Сообщений: 25244
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Содержимое обьекта можно тоже разобрать ("распарсить") - AMEMBERS заполняет массив именами свойств обьекта, зная имена - получаем их значения, значения тлже могут оказаться обьектами или массивами, и т.д.
Ratings: 0 negative/0 positive
Re: nfjsonread
ssa

Сообщений: 13007
Откуда: Москва
Дата регистрации: 23.03.2005
sss_007
Хотел бы понять как действовать в этом случае.
Почитай доку по nfjsonread на предмет объявления элементов данных массивами.

------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: nfjsonread
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
sss_007
Но json может быть более сложным:
{"data":[{"value":[{"value2":"test2", "value3":"test3"}], "value1":"test1"}]}
В первом случае при использовании nfjsonread я получал array, данные из которого записывал в курсор.
Во втором случае при использовании nfjsonread я получал array и value1 могу записать в курсор, а value имеет тип object и в курсор его записать на сколько я понимаю не получится.
Хотел бы понять как действовать в этом случае. Возможно ли разобрать более сложный json с помощью nfjsonread, если можно то как? Или нужно использовать какую-то другую библиотеку?
Во 2 случае в value имеется не объект, а МАССИВ. Соответственно в нём может быть множество объектов со свойствами value2 и value3. Для того чтобы там находился всего лишь одиночный объект, к свойствам которого нет проблем получить доступ напрямую, json должен выглядать вот так:
{"data":[{"value":{"value2":"test2", "value3":"test3"}, "value1":"test1"}]}
такую структуру вполне можно сохранять в курсор. В случае же вложенного массива - ну придётся дублировать value1, создавая по 1 записи на каждый элемент вложенного массива. Объектная иерархия с коллекциями (массивами, списками) не укладывается естественным образом в "плоскую" структуру реляционной таблицы.
Используемая библиотека парсинга тут вообще не играет никакой роли - это проблема архитекутрная, а не программная.


------------------
WBR, Igor
Ratings: 0 negative/1 positive
Re: nfjsonread
sss_007
Автор

Сообщений: 6
Откуда: Королёв
Дата регистрации: 19.09.2019
Большое спасибо, я получил направление для освоения необходимых инструментов. Буду изучать и пробовать. Скорее всего вернусь с новой порцией вопросов)
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 21 akvvohinc  (Гостей: 20)

© 2000-2024 Fox Club 
Яндекс.Метрика