我想使用 JSONM 和 OCaml 获取 json 文件中成员元素的特定出现的所有位置的列表。我知道如何在 YoJSON 中做到这一点,但无法在 jsonm 中找到方法。
json文件如下:
{
"a": [
{
"name": "blah",
"comment": "foobar"
},
{
"name": "blah",
"comment": "fooba2r"
},
],
"b": [
{
"name": "blah",
"comment": "foobar"
},
{
"name": "bla2h",
"comment": "foobar"
},
}
我想Jsonm.decoded_range
在“a”中获取名称为“blah”的事件对象列表。它可以出现两次。
我目前有以下代码,但它只是让我第一次出现名为 blah 的对象。
let get_location ?encoding section label src =
let rec loop position section label section_hit d =
match Jsonm.decode d with
| `Lexeme (`String label_name) when String.equal label_name label ->
if section_hit then
loop (Jsonm.decoded_range d :: position) section label section_hit d
else
loop position section label section_hit d
| `Lexeme (`Name section_name) when String.equal section_name section ->
loop position section label true d
| `Lexeme _
| `Error _ ->
loop position section label section_hit d
| `End -> List.rev position
| `Await -> assert false
in
loop [] section label false (Jsonm.decoder ?encoding (`String src))