Сообщение создано: 18. 10. 2017 [10:44]
|
arcsin
Аркадий Кисель
Contributor
Создатель темы
Зарегистрирован(а) с: 17.02.2017
Сообщения: 77
|
Добрый день! имеется строка json например:
{"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 например:
{"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.
|