:: Visual Foxpro, Foxpro for DOS
Как разобрать Json
Sejko
Автор

Сообщений: 146
Откуда: Moscow
Дата регистрации: 09.01.2005
Помогите , приходит файл такого вида во вложении resultat.txt ,
надо его разобрать, есть знаю метод Json , но никогда не имел дела


------------------
sejko
Ratings: 0 negative/0 positive
Re: Как разобрать Json
akvvohinc

Сообщений: 4224
Откуда: Москва
Дата регистрации: 11.11.2008
forum.foxclub.ru
Ratings: 0 negative/0 positive
Re: Как разобрать Json
Sejko
Автор

Сообщений: 146
Откуда: Moscow
Дата регистрации: 09.01.2005
Посмотрел, есть у меня такой пример , а если записей как в примере Много и с начала идет
{"documents":[

пример прикладываю
т.е. записей непонятно сколько, как разобрать


------------------
sejko




Исправлено 2 раз(а). Последнее : Sejko, 27.01.20 09:25
Ratings: 0 negative/0 positive
Re: Как разобрать Json
ssa

Сообщений: 13008
Откуда: Москва
Дата регистрации: 23.03.2005
Sejko
есть знаю метод Json
ГДЕ есть? Откуда такие познания?
Sejko
т.е. записей непонятно сколько, как разобратьт.е. записей непонятно сколько, как разобрать
Так же как и одну, возможно в цикле.

------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: Как разобрать Json
Sejko
Автор

Сообщений: 146
Откуда: Moscow
Дата регистрации: 09.01.2005
можете помочь на примере вложения


------------------
sejko
Ratings: 0 negative/0 positive
Re: Как разобрать Json
ssa

Сообщений: 13008
Откуда: Москва
Дата регистрации: 23.03.2005
Sejko
можете помочь на примере вложения
Большой спасиб за разжевывание мне неизвестных мне моих возмжоностей.

------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: Как разобрать Json
Simple777

Сообщений: 33855
Дата регистрации: 05.11.2006
Лучше всего "разобрать ручками". Ничего сложного в этом нет, но зато не будет никакой зависимости от чьих-либо библиотек.

Алгоритм тривиальный. В отдельную таблицу записать все нужные для обработки наименования свойств - на каждое свойство одна запись в таблице. Далее в цикле по условию FOR !FEOF() считывается запись из Json-файла. Далее в следующем цикле запись "разбирается" по свойствам (из таблицы с наименованиями свойств). В CASE... ENDCASE обрабатывается каждое из свойств. Результат записывается в выходную таблицу. Конечно, есть нюансы. Например, надо обязательно учесть наличие экранированных символов в Json-файле.
В общем за полдня или за день вполне можно написать свой конвертер, который и в будущем пригодится. Думаю, что при таком алгоритме разбора Json-файлов скорость обработки будет высокой. Да и вообще ручной разбор позволяет почувствовать неочевидные нюансы предметной области.



Исправлено 3 раз(а). Последнее : Simple777, 27.01.20 10:20
Ratings: 0 negative/0 positive
Re: Как разобрать Json
ssa

Сообщений: 13008
Откуда: Москва
Дата регистрации: 23.03.2005
Simple777
в цикле по условию FOR !FEOF()
При наличии filetostr() это очень полезный совет. Ведь точно известно, что файлики все будут десятки мегов размером...
А сторонние библиотеки такие все закрытые, непрозрачные, не известно что и как делающие....


------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: Как разобрать Json
Simple777

Сообщений: 33855
Дата регистрации: 05.11.2006
ssa
Simple777
в цикле по условию FOR !FEOF()
При наличии filetostr() это очень полезный совет. Ведь точно известно, что файлики все будут десятки мегов размером...
А сторонние библиотеки такие все закрытые, непрозрачные, не известно что и как делающие....

Можно и в переменную загнать Json-файл - это не так принципиально. А причём тут прозрачность чужих библиотек, вааще непонятно. Чужими библиотека надо пользоваться тогда и только тогда, когда свое решение заведомо уступает по скорости.

Мне пришлось разбирать Json-файл в одном проекте. При ручном разборе я поставил перед хозяином файла много неочевидных как для меня, так и для разработчика "с той стороны" вопросов. Ручной разбор в этом отношении весьма полезен.



Исправлено 1 раз(а). Последнее : Simple777, 27.01.20 10:44
Ratings: 0 negative/0 positive
Re: Как разобрать Json
ssa

Сообщений: 13008
Откуда: Москва
Дата регистрации: 23.03.2005
Simple777
ssa
Simple777
в цикле по условию FOR !FEOF()
При наличии filetostr() это очень полезный совет. Ведь точно известно, что файлики все будут десятки мегов размером...
А сторонние библиотеки такие все закрытые, непрозрачные, не известно что и как делающие....

Можно и в переменную загнать Json-файл - это не так принципиально. А причём тут прозрачность чужих библиотек, вааще непонятно. Чужими библиотека надо пользоваться тогда и только тогда, когда свое решение заведомо уступает по скорости.
Время написания своего кода, при этом, конечно же, не учитывается?
Цитата:

Мне пришлось разбирать Json-файл в одном проекте. При ручном разборе я поставил перед хозяином файла много неочевидных как для меня, так и для разработчика "с той стороны" вопросов. Ручной разбор в этом отношении весьма полезен.
Потрясающе. И, конечно же, все вопросы были именно по формату передачи, а не по семантике данных...

------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: Как разобрать Json
Sejko
Автор

Сообщений: 146
Откуда: Moscow
Дата регистрации: 09.01.2005
Ssa , вы мне скажите. Можете дать дельные советы!
Или образец


------------------
sejko
Ratings: 0 negative/0 positive
Re: Как разобрать Json
Simple777

Сообщений: 33855
Дата регистрации: 05.11.2006
ssa
Потрясающе. И, конечно же, все вопросы были именно по формату передачи, а не по семантике данных...

Это была новая функция по обмену данными. Разработчик "с той стороны" вообще не обязан был мне что-то рассказывать. Во всяком случае, он отвечал на мои вопросы. Когда же я начал изучать Json-файл, то выяснились далеко не очевидные нюансы. Например, выяснилось, что в одном из свойств бывает не только число, но и NULL. Причём NULL подразумевается тогда, когда вместо числа есть только разделительные кавычки. И другие подобные нюансы.

Что же касаемо скорости разработки "своими силами". Во всем нужен здравый смысл. Не стоит разрабатывать свой текстовый редактор. Но почему бы и не сделать свой конвертер Json-файлов? Json-формат весьма популярен, и конвертер наверняка пригодится не однажды.



Исправлено 1 раз(а). Последнее : Simple777, 27.01.20 11:03
Ratings: 0 negative/0 positive
Re: Как разобрать Json
ssa

Сообщений: 13008
Откуда: Москва
Дата регистрации: 23.03.2005
Simple777
ssa
Потрясающе. И, конечно же, все вопросы были именно по формату передачи, а не по семантике данных...

Это была новая функция по обмену данными. Разработчик "с той стороны" вообще не обязан был мне что-то рассказывать. Во всяком случае, он отвечал на мои вопросы. Когда же я начал изучать Json-файл, то выяснились далеко не очевидные нюансы. Например, выяснилось, что в одном из свойств бывает не только число, но и NULL. Причём NULL подразумевается тогда, когда вместо числа есть только разделительные кавычки. И другие подобные нюансы.
И это ну ведь никак не относится к семантике данных... Закат солнца вручную всегда сопровождается каким-то "нюансами".
Цитата:

Что же касаемо скорости разработки "своими силами". Во всем нужен здравый смысл.
Вот именно.
Цитата:
Не стоит разрабатывать свой текстовый редактор. Но почему бы и не сделать свой конвертер Json-файлов?
Хотя бы потому, что он уже нарисован, оттестирован, в том числе и по скорости, свободно доступен, достаточно малогабаритен, легок в использовании и т.д.
Цитата:
Json-формат весьма популярен, и конвертер наверняка пригодится не однажды.
А что, не однажды использовать можно только свой код?

------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: Как разобрать Json
Sejko
Автор

Сообщений: 146
Откуда: Moscow
Дата регистрации: 09.01.2005
Задал тот же вопрос , на соседнем форуме SQl.ru
и пришел неожиданный ответ в лице Sergey Sizov
Берется готовая либа и разбирается результат ее работы в виде чисто фоксовых объектов.

github.com


------------------
sejko
Ratings: 0 negative/0 positive
Re: Как разобрать Json
Simple777

Сообщений: 33855
Дата регистрации: 05.11.2006
ssa
И это ну ведь никак не относится к семантике данных...

NULL в данном случае означал важное событие, о котором я просто не знал. Начал уточнять у разработчика, и узнал разные тонкости.

Насчёт Json-конвертера. Во-первых, у меня был в проекте не VFP. Во-вторых, ни разу не запускал такой конвертер. Даже любопытно - а что же там в выходной таблице получается?
Ratings: 0 negative/0 positive
Re: Как разобрать Json
ssa

Сообщений: 13008
Откуда: Москва
Дата регистрации: 23.03.2005
Simple777
ssa
И это ну ведь никак не относится к семантике данных...

NULL в данном случае означал важное событие, о котором я просто не знал. Начал уточнять у разработчика, и узнал разные тонкости.
Ну так в FPD нет понятия NULL, а там где оно есть - это все рюшечки, не нужные для обработки алфавитно-цифровой информации.
Цитата:

Насчёт Json-конвертера. Во-первых, у меня был в проекте не VFP.
Об этом очень трудно догадаться
Цитата:
Во-вторых, ни разу не запускал такой конвертер.
Есть чем гордиться. И порассуждать о вкусе устриц с теми, кто их ел, ни разу их не пробовав.
Цитата:
Даже любопытно - а что же там в выходной таблице получается?
А где и что говорилось про таблицу?

------------------
Лень - это неосознанная мудрость.




Исправлено 1 раз(а). Последнее : ssa, 27.01.20 11:48
Ratings: 0 negative/0 positive
Re: Как разобрать Json
pasha_usue

Сообщений: 3650
Откуда: Е-бург
Дата регистрации: 06.10.2006
Sejko
и пришел неожиданный ответ в лице Sergey Sizov
Сергей. Откуда такая двуличность? На скуле ответил, а тут не ответил (;Ж
Ratings: 0 negative/0 positive
Re: Как разобрать Json
ssa

Сообщений: 13008
Откуда: Москва
Дата регистрации: 23.03.2005
pasha_usue
Sejko
и пришел неожиданный ответ в лице Sergey Sizov
Сергей. Откуда такая двуличность? На скуле ответил, а тут не ответил (;Ж
Я больше не буду...

------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: Как разобрать Json
Sejko
Автор

Сообщений: 146
Откуда: Moscow
Дата регистрации: 09.01.2005
:beer2:


------------------
sejko
Ratings: 0 negative/0 positive
Re: Как разобрать Json
Sejko
Автор

Сообщений: 146
Откуда: Moscow
Дата регистрации: 09.01.2005
Начал копаться
в первых ругается на весь resulatat.txt line too long ...

урезал
и все равно чего то не то, поправьте



text to mssample2 noshow
[{"request_id":"37f0eabe-5c3b-432c-bffb-ef0f6d9cc219","document_id":"7716ee2e-a8a4-465c-982e-1ca1a3b439d4","date":"2020-01-14 15:55:29","processed_date":"2020-01-14 15:55:30","sender":"9ec039f8-2a29-4b7a-8664-25490f23c52a","sys_id":"86325e0c-9a23-4547-ad8a-219b4fc7fd03","doc_type":601,"doc_status":"FAILED_RESULT_READY","file_uploadtype":1,"version":"1.34"},{"request_id":"de92bbd1-c396-479a-a26d-92be2087fd74","document_id":"26646343-ffb9-4dc2-94a9-cd7142eaf663","date":"2020-01-14 15:36:18","processed_date":"2020-01-14 15:36:19","sender":"9ec039f8-2a29-4b7a-8664-25490f23c52a","sys_id":"86325e0c-9a23-4547-ad8a-219b4fc7fd03","doc_type":601,"doc_status":"FAILED_RESULT_READY","file_uploadtype":1,"version":"1.34"}]
ENDTEXT

*!*
*!* text to mssample2 noshow
*!* [
*!* {
*!* "Order": {
*!* "Number":"SO43659",
*!* "Date":"2011-05-31T00:00:00"
*!* },
*!* "AccountNumber":"AW29825",
*!* "Item": {
*!* "Price":2024.9940,
*!* "Quantity":1
*!* }
*!* },
*!* {
*!* "Order": {
*!* "Number":"SO43661",
*!* "Date":"2011-06-01T00:00:00"
*!* },
*!* "AccountNumber":"AW73565",
*!* "Item": {
*!* "Price":2024.9940,
*!* "Quantity":3
*!* }
*!* }
*!* ]
*!* ENDTEXT


nfOpenJson( m.mssample2,'$.array', ' ;
- request_id v(200) $.Order.request_id ;
- document_id v(200) $.Order.document_id ;
- Date t $.Order.Date;
- processed_date t $.Order.processed_date ;
- sender v(200) $.Order.sender ;
- sys_id v(200) $.Order.sys_id ;
- doc_type v(200) $.Order.doc_type ;
- doc_status v(200) $.Order.doc_status ;
- file_uploadtype v(200) $.Order.file_uploadtype ;
- Order JSON;
' )

browse

nfOpenJson( m.msSample2 )
browse

nfOpenJson( m.msSample2,'$.array')
browse


------------------
sejko
Ratings: 0 negative/0 positive


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

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

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