123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- [/
- / Copyright (c) 2008 Marcin Kalicinski (kalita <at> poczta dot onet dot pl)
- / Copyright (c) 2009 Sebastian Redl (sebastian dot redl <at> getdesigned dot at)
- /
- / Distributed under the Boost Software License, Version 1.0. (See accompanying
- / file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- /]
- [section JSON Parser]
- [def __json__ [@http://en.wikipedia.org/wiki/JSON JSON format]]
- The __json__ is a data interchange format derived from the object literal
- notation of JavaScript. (JSON stands for JavaScript Object Notation.)
- JSON is a simple, compact format for loosely structured node trees of any depth,
- very similar to the property tree dataset. It is less structured than XML and
- has no schema support, but has the advantage of being simpler, smaller and typed
- without the need for a complex schema.
- The property tree dataset is not typed, and does not support arrays as such.
- Thus, the following JSON / property tree mapping is used:
- * JSON objects are mapped to nodes. Each property is a child node.
- * JSON arrays are mapped to nodes. Each element is a child node with an empty
- name. If a node has both named and unnamed child nodes, it cannot be mapped
- to a JSON representation.
- * JSON values are mapped to nodes containing the value. However, all type
- information is lost; numbers, as well as the literals "null", "true" and
- "false" are simply mapped to their string form.
- * Property tree nodes containing both child nodes and data cannot be mapped.
- JSON round-trips, except for the type information loss.
- For example this JSON:
- {
- "menu":
- {
- "foo": true,
- "bar": "true",
- "value": 102.3E+06,
- "popup":
- [
- {"value": "New", "onclick": "CreateNewDoc()"},
- {"value": "Open", "onclick": "OpenDoc()"},
- ]
- }
- }
- will be translated into the following property tree:
- menu
- {
- foo true
- bar true
- value 102.3E+06
- popup
- {
- ""
- {
- value New
- onclick CreateNewDoc()
- }
- ""
- {
- value Open
- onclick OpenDoc()
- }
- }
- }
- [endsect] [/json_parser]
|