powered by simpleCommunicator - 2.0.35     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / JSON parser
8 сообщений из 8, страница 1 из 1
JSON parser
    #39942509
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.

Недавно на форуме https://groups.google.com/forum/#!forum/comp.lang.mumps
появился парсер Winfrid-а Bantel-а для GT.M (YottaDB)
https://github.com/informatik-aalen/JSON-streaming-parser-for-M
В этих системах он работает

Я пробую его в Каше но почему-то получаю ошибку...
Неужели не стыковка стандартов ?

Ошибку получаю здесь
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
pair
 n tpair s tpair=text
 ;; New for Valeriu
 w data("callback","start"),!
 w data("callback","start")_"(.level,tpair)",!
 ;; 
 d @(data("callback","start")_"(.level,tpair)")
 d match("string",-5),match(":",-6),value
 d @(data("callback","end")_"(.level,tpair)")
	q



USER>d ^JSONTEST0
cbstart^JSONTEST0
cbstart^JSONTEST0(.level,tpair)

d @(data("callback","start")_"(.level,tpair)")
^
<NOLINE>pair+6^JSONPARSER
USER 7d1>w

c="""
data="{"a1": 123.1, "a2": [1,2], "a3": {"a":"1"}}"
data("callback","end")="cbend^JSONTEST0"
data("callback","getc")="getc"
data("callback","skalar")="cbskalar^JSONTEST0"
data("callback","start")="cbstart^JSONTEST0"
data("callback","ungetc")="ungetc"
data("nr")=5
error=0
level=1
level(1)=0
text="a1"
token="string"
tpair="a1"
USER 7d1>

Если нетрудно, можете проверить у вас ?

Спасибо
...
Рейтинг: 0 / 0
JSON parser
    #39942528
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нашел ошибку, пока еще тестирую
...
Рейтинг: 0 / 0
JSON parser
    #39942557
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для Caché можно для старых версий использовать такой парсер

для новых использовать нативный парсер
...
Рейтинг: 0 / 0
JSON parser
    #39942566
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAiMor,

Я пользуюсь разными. Просто хотел потестить в Каше.
Нашел он ошибочку, и , моя оплошность ..
Каше вроде не привередлив к пустым строкам , я даже не посмотрел.
Оказывается сохранил рутину до первой пустой строки.
Примерно так как скачал :
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
JSONTEST0    ;
	; Input: Single string (callback in ^JSONPARSER)
	; Output: All scalar values and all (nested) property names
	;
	k a s a=$P($T(txt),";",2,2000)
	s a("callback","skalar")="cbskalar^JSONTEST0",a("callback","start")="cbstart^JSONTEST0",a("callback","end")="cbend^JSONTEST0"
	s a("callback","getc")="getc",a("callback","ungetc")="ungetc"
	s result=$$^JSONPARSER(.a) w "result:",result,!
	q
	
txt ;{"a1": 123.1, "a2": [1,2], "a3": {"a":"1"}}
	;{"Hobbies":["music","cinema"],"NN":"Mustermann","VN":"Hans","adresse":{"Ort":"Stuttgart","PLZ":70374} }
	;{"by":1967,"nn":"Mustermann","children": ["child-1","child-2"],"male":true,"female":false,"div":null }
	; These callback-functions are also used by JSONTEST3 and JSONTEST4 !!!
	
cbskalar(l,t,txt)
	n (l,t,txt)
	w t," ",txt,!
	q
	
cbstart(l,txt)
	n (l,txt)
	w "start "_$S($D(txt):"prop "_txt,1:"array"),!
	q
	
cbend(l,txt)
	w "end "_$S($D(txt):"prop "_txt,1:"array"),!
	q
	;


В других языках хоть сотню пустых строк.
...
Рейтинг: 0 / 0
JSON parser
    #39942568
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я всегда был приверженцем СТАНДАРТА.
те, что работает в одной М системе, должно работать и в другой .
В интерсистемсе решили что нет.
...
Рейтинг: 0 / 0
JSON parser
    #39942575
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu
Каше вроде не привередлив к пустым строкам , я даже не посмотрел.
Оказывается сохранил рутину до первой пустой строки.
Тут скорее зависит от того как ты это загрузил туда. Раз загрузилось так, значит вместо пустых строк должна быть точка.
...
Рейтинг: 0 / 0
JSON parser
    #39942970
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu,

здесь небольшая несовместимость не языка, а, скорее всего, "классического" формата экспорта программ (%RO).
В GT.M при экспорте утилита ^%RO заменяет пустые строки на пробелы.
В Cache аналогичная утилита ^%RO пустую строку заменяет на ".", а при импорте ^%RI делает обратную замену.
Однако у меня получилось импортировать в Cache YDB-шный файл *.ro, полученный их исходника, в котором были пустые строки. Вот протокол:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
QMSLU>d ^%RI
 
Input routines from Sequential
Device: d:\pr\ff\gg.ro
Parameters? "R" =>
 
    *****  W A R N I N G   *****
 
File Header: %RO Routine Output Utility
Date Stamp: GT.M 01-APR-2020 18:57:20
 
This file may not be a %RO output file.
Override and use this File with %RI? No => yes
%RI has detected a routine written with UNKNOWN mode.
    0) Cache
    1) DSM-11
... 11) MVBASIC
 
Please enter a number from the above list: <0> 1 ; GT.M не было в списке, поэтому выбрал "классику"
 
File written by OLD GT.M 01-APR-2020 18:57:20 with description:
%RO Routine Output Utility
 
( All Select Enter List Quit )


ну и компиляция прошла без ошибок, ничего не пропало; пустые строки заменились на "однопробельные", что вряд ли можно счесть дефектом.
File written by OLD GT.M - улыбнуло; я его свежей YottaDB записал.
...
Рейтинг: 0 / 0
JSON parser
    #39943167
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Maslov,

Спасибо. Я понял свою ошибку потом.
Я тупо копипастил и компилировал текст.
Мне так легче было, а вот о последствиях не подумал.
К стати, там тоже была пару несоответствий с Каше в самом парсере.
Человек исправил на гитхабе.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / JSON parser
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]