parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

^json:parse[] bag (1)

AleXp 31.01.2015 10:59 / 01.02.2015 04:31

Пример из документации:
$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]
]]
На выходе обещают:
$h[
   $.a1[
      $.b[1]
      $.c[xyz]
      $.d[=3=]
   ]
   $.a2[
      $.b[1]
      $.b_2[2]
      $.b_3[3]
   ]
]
А реально получается:
$h[
   $.a1[
      $.b(1)
      $.c[xyz]
      $.d[zzz]
   ]
   $.a2[
      $.b(1)
      $.b_2(2)
      $.b_3(3)
   ]
]
В общем параметр $.double() не работает.

Если в строке закавычить все цифры:
$json_string[{
	"a1":{"b": "1", "c": "xyz", "d": "zzz"},
	"a2":{"b": "1", "b": "2", "b": "3"}
}]
то тогда парсер всё переведёт в строки:
$h[
   $.a1[
      $.b[1]
      $.c[xyz]
      $.d[zzz]
   ]
   $.a2[
      $.b[1]
      $.b_2[2]
      $.b_3[3]
   ]
]
При этом $.double() опять ни на что не влияет.

Версия парсера 3.4.3 (compiled on i386-pc-win32)

UPD:
И
$.object[$handler]
, кстати, тоже работает не так как в документации расписано. Он вызывается только для
"a1":{...}
и
"a2":{...}
и не вызывается для внутренних членов этих массивов. Т.е. преобразования из
"d":"zzz"
в
$.d[=3=]
не получается. Выходит
$.d[zzz]
.

  • ^json:parse[] bag (1), AleXp 31.01.2015 10:59 / 01.02.2015 04:31
    • Ответ, Misha v.3 [M] 02.02.2015 03:20 / 02.02.2015 03:34