string. Преобразование объекта Parser в JSON-строку
|
^json:string[объект;опции преобразования]
Метод преобразует системный или пользовательский объект в JSON-строку.
Опции преобразования - хеш, в котором можно указать:
|
По-умолчанию
|
Описание
|
$.skip-unknown(true|false)
|
false
|
При указании значения true вместо exception в результирующую JSON-строку будут выдаваться значения 'null' при сериализации объектов с типами, отличными от void, bool, string, int, double, date, table, hash и file.
|
$.indent(true|false)
|
false
|
При указании значения true будет включено форматирование результирующей JSON-строки символами табуляции по глубине вложенности.
|
$.date[sql-string|gmt-string|unix-timestamp]
|
sql-string
|
Опция определяет вид, в котором значения объектов класса date будут попадать в результирующую JSON-строку (см. одноимённые методы объекта класса date).
|
$.table[object|array|compact]
|
object
|
Опция определяет вид, в котором значения объектов класса table будут попадать в результирующую JSON-строку.
object: [{"col1":"val11","col2":"val12",...},{"col1":"val21","col2":"val22",...},...] array: [["col1","col2",...] || null (для nameless таблиц),["val11","val12",...],...] compact: ["value11" || ["val11","val12",...],...] |
$.file[text|base64|stat]
|
не определён
|
Опция определяет вид, в котором значения объектов типа file будут попадать в результирующую JSON-строку.
По умолчанию (если данная опция не определена или её значение равно stat) в результирующую JSON-строку попадает информация об объектах класса file (имя файла, размер, content-type, mode), но их содержимое не попадает. |
$.xdoc[параметры преобразования в текст]
|
не определён
|
Опции преобразования объекта класса xdoc в строку
|
$.класс[ссылка на метод]
|
не определён
|
Любой класс (включая вышеупомянутые date, table и file) можно вывести используя пользовательский метод, который должен принимать 3 параметра: ключ, объект и опции вызова ^json:string[] (последнее нужно для рекурсивного вывода пользовательских объектов).
Поиск методов происходит во всех родительских классах. [3.4.2] |
$._default[ссылка на метод]
|
не определён
|
Если определён, то метод будет вызываться для всех объектов пользовательских классов (кроме тех, вывод которых явно задан с помощью опции $.класс[ссылка на метод]). Метод должен принимать 3 параметра: ключ, объект и опции вызова.
|
Пример
@main[]$h[
$.void[]
$.bool(true)
$.double(1/2)
$.string[русские буквы]
$.hash[
$.e[ee]
]
$.date[^date::create(2006;08;18;06;09;00)]
$.table[^table::create{c1 c2 c3^#0Av1 v2 v3^#0Av4 v5 v6}]
$.file[^file::create[text;zigi.txt;file-content]]
$.img[^image::create(100;100;0)]
]
^json:string[$h;
$.indent(true)
$.table[array]
$.file[base64]
$.image[$image_handler]
]
@image_handler[key;value;params]
"custom value of image $key"
В результате выполнения будет выведено:{
"void":"",
"bool":true,
"double":0.5,
"string":"русские буквы",
"hash":{
"e":"ee"
},
"date":"2006-08-18 06:09:00",
"table":[
["c1","c2","c3"],
["v1","v2","v3"],
["v4","v5","v6"]
],
"file":{
"class":"file",
"name":"zigi.txt",
"size":12,
"content-type":"text\/plain",
"mode":"text",
"base64":"ZmlsZS1jb250ZW50"
},
"img":"custom value of image img"
}