УкраїнськаEnglishmRussian
Вход/Новый
В теме нет новых постов

json


Автор Сообщение
Сообщение создано: 18. 10. 2017 [10:44]
arcsin
Аркадий Кисель
Contributor
Создатель темы
Зарегистрирован(а) с: 17.02.2017
Сообщения: 77
Добрый день! имеется строка json например:
JAVASCRIPT
{"sensors":[{"id":125,"value":21.38,"time":1373440618,"changed":1373440600,"trend":0},
{"id":1168,"value":24.6,"time":1373440795,"changed":1373440700,"trend":0},
{"id":1169,"value":23.2,"time":1373440795,"changed":1373440700,"trend":0}]}


как можно выхватывать значения из неё? я так понял самое близкое Array match( string pat, string flg = "" ); или Array match( TRegExp pat );
не нашел в документации формат pat и flg.
и на выходе хочу получить массив id: [125],[1168],[1169].

И вопрос в стиле "после доклада": Роман, скажите пожалуйста в 2 предложениях планируется ли поддержка json? может импорт/экспорт в/из xml объекта. или отдельный объект, или Вы считаете что регулярок и паттернов достаточно?
Сообщение создано: 18. 10. 2017 [10:55]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
"arcsin" wrote:

Добрый день! имеется строка json например:
JAVASCRIPT
{"sensors":[{"id":125,"value":21.38,"time":1373440618,"changed":1373440600,"trend":0},
{"id":1168,"value":24.6,"time":1373440795,"changed":1373440700,"trend":0},
{"id":1169,"value":23.2,"time":1373440795,"changed":1373440700,"trend":0}]}


как можно выхватывать значения из неё? я так понял самое близкое Array match( string pat, string flg = "" ); или Array match( TRegExp pat );

Да, так, с помощью регулярных выражений.

"arcsin" wrote:

не нашел в документации формат pat и flg.

Про флаги тут, естественно.
Сами правила стандартны, про что в интернете для Perl и PCRE валом.

"arcsin" wrote:

И вопрос в стиле "после доклада": Роман, скажите пожалуйста в 2 предложениях планируется ли поддержка json? может импорт/экспорт в/из xml объекта. или отдельный объект, или Вы считаете что регулярок и паттернов достаточно?

Я не планирую, поскольку мне лично он не нужен. Кроме того, подобных форматов валом и для их экспорта и импорта даже специально нужно реализовывать через прямой анализ или регулярные выражения, поэтому и реализуйте прямо в OpenSCADA если он Вам нужен.

Learn, learn and learn better than work, work and work.
Сообщение создано: 18. 10. 2017 [14:22]
arcsin
Аркадий Кисель
Contributor
Создатель темы
Зарегистрирован(а) с: 17.02.2017
Сообщения: 77
спасибо, за ответ, Роман. почти получилось, но есть проблема:
из текста пытаюсь выхватить только вещественные такой регуляркой
\d+\.\d+
для JavaLikeCalc экранирую обратные слеши и получаю:
rez = new2.match("\\d+\\.\\d+","g");
работает правильно. пытаюсь усложнить до такой регулярки:
\"value\":\d+\.\d+
экранирую обратные слеши,
rez = new2.match("\\"value\\":\\d+\\.\\d+","g");
и получаю ошибку "syntax error"
не экранирую получаю пустой объект.
я так понимаю что проблема вылазит из-за двойных кавычек, и их экранировании.
Сообщение создано: 18. 10. 2017 [16:52]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
"arcsin" wrote:

я так понимаю что проблема вылазит из-за двойных кавычек, и их экранировании.

Если понимаете, то к чему пишите? Корректно экранируйте и всё, а эта ошибка видна по подсветке синтаксиса.
А вообще, для проверки и отладки можно пользоваться онлайн сервисами вроде: https://regex101.com/
После чего вставлять сюда удвоив все символы "\" и естественно поставив его перед двойными кавычками внутри.

Learn, learn and learn better than work, work and work.



19800