parse. Преобразование JSON-строки в хеш

^json:parse[JSON-строка;опции преобразования]

Метод преобразует JSON-строку в хеш.

Опции преобразования - хеш, в котором можно указать:

По-умолчанию
Описание
$.depth(число)
19
Максимальная глубина вложенности.
$.double(true|false)
true
Преобразовывать числа в объекты класса double. Если указано значение false, то числовые значения будут оставаться в виде строк.
$.distinct[first|last|all]
не определён
Способ обработки дублирующих ключей:
first   - будет оставлен первый встретившийся элемент;
last   - будет оставлен последний встретившийся элемент;
all   - в результат попадут все элементы, при этом элементы, начиная со второго, получат суффиксы _2, _3 и т.д.
по умолчанию - в случае обнаружения дублирующихся ключей будет выдано исключение (exception)
$.object[ссылка на метод]
не определён
Опция позволяет указать пользовательский метод с двумя параметрами, который будет вызываться для всех объектов. Возвращаемый методом объект (в том числе пользовательского типа) и будет помещаться в в результирующую структуру.
$.array[ссылка на метод]
не определён
Опция позволяет указать пользовательский метод с двумя параметрами, который будет вызываться для всех массивов. Возвращаемый методом объект (в том числе пользовательского типа) и будет помещаться в в результирующую структуру.   
$.taint[язык преобразования]
не определён
Задаёт язык преобразования для всех строк в результирующем хеше.   


Пример
@main[]
$json_string[
{
   "a1":{"b": 1, "c": "xyz", "d": "zzz"}
,
   "a2":{
"b": 1, "b": 2, "b": 3}
}
]

$h[^json:parse[$json_string;
   $.double(false)
   $.distinct[all]
   $.object[$handler]
]]

@handler[key;value]
$result[^if($keq eq "d"){=^value.length[]=}{$value}]
В результате разбора указанной JSON-строки хеш будет содержать:

$h[
   $.a1[
      $.b[1]
      $.c[xyz]
      $.d[=3=]
   ]
   $.a2[
      $.b[1]
      $.b_2[2]
      $.b_3[3]
   ]
]



    Поддержать сайт на родительском проекте КГБ