json
ИМЯ
json — парсер JSON
Содержание
КРАТКОЕ ОПИСАНИЕ
package require Tcl 8.5 9
package require json ?1.3.6?
::json::json2dict txt
::json::many-json2dict txt ?max?
ОПИСАНИЕ
Пакет json предоставляет простую библиотеку только на Tcl для разбора формата обмена данными JSON http://www.json.org/, определённого в RFC 4627 http://www.ietf.org/rfc/rfc4627.txt. Разбор JSON неоднозначен, поскольку JSON содержит информацию о типах, которая не сохраняется при преобразовании в Tcl. Пакет json возвращает данные в виде Tcl-словаря dict. Для использования требуется пакет dict или Tcl 8.5.
КОМАНДЫ
-
::json::json2dict txt
Разбирает текст txt в формате JSON в словарь Tcl и возвращает полученное значение.
Если txt содержит несколько сущностей JSON, возвращается только первая.
-
::json::many-json2dict txt ?max?
Разбирает текст txt в формате JSON, содержащий несколько сущностей JSON, в список словарей и возвращает этот список.
Если указано значение max, из txt извлекается ровно столько сущностей. По умолчанию команда пытается извлечь все сущности без ограничений. Значение «max == 0» не имеет смысла и приведёт к ошибке команды.
ПРИМЕРЫ
Пример преобразования массива JSON в Tcl. Массив JSON возвращается как один элемент с несколькими значениями.
[
{
"precision": "zip",
"Latitude": 37.7668,
"Longitude": -122.3959,
"Address": "",
"City": "SAN FRANCISCO",
"State": "CA",
"Zip": "94107",
"Country": "US"
},
{
"precision": "zip",
"Latitude": 37.371991,
"Longitude": -122.026020,
"Address": "",
"City": "SUNNYVALE",
"State": "CA",
"Zip": "94085",
"Country": "US"
}
]
=>
{Country US Latitude 37.7668 precision zip State CA City {SAN FRANCISCO} Address {} Zip 94107 Longitude -122.3959} {Country US Latitude 37.371991 precision zip State CA City SUNNYVALE Address {} Zip 94085 Longitude -122.026020}
Пример преобразования объекта JSON в Tcl. Объект JSON возвращается как список из нескольких элементов (словарь).
{
"Image": {
"Width": 800,
"Height": 600,
"Title": "View from 15th Floor",
"Thumbnail": {
"Url": "http://www.example.com/image/481989943",
"Height": 125,
"Width": "100"
},
"IDs": [116, 943, 234, 38793]
}
}
=>
Image {IDs {116 943 234 38793} Thumbnail {Width 100 Height 125 Url http://www.example.com/image/481989943} Width 800 Height 600 Title {View from 15th Floor}}
СВЯЗАННЫЕ ПАКЕТЫ
Чтобы записывать JSON, а не разбирать его, см. пакет json::write.
Ошибки, идеи, отзывы
В этом документе и описываемом в нём пакете неизбежно могут содержаться ошибки и другие проблемы. Пожалуйста, сообщайте о них в категории json в системе отслеживания ошибок Tcllib. Также сообщайте о любых идеях по улучшению пакета и/или документации.
Предлагая изменения кода, пожалуйста, прикладывайте унифицированные diff-файлы, то есть результат выполнения diff -u.
Обратите также внимание, что настоятельно предпочтительнее прикладывать вложения, а не вставлять патчи в текст. Вложения можно добавить, перейдя к форме Редактировать заявки сразу после её создания и нажав крайнюю левую кнопку на вторичной панели навигации.
КАТЕГОРИЯ
Программирование CGI
АВТОРСКИЕ ПРАВА
Авторское право © 2006 ActiveState Software Inc.
Авторское право © 2009 Thomas Maeder, Glue Software Engineering AG