0

我想使用 JSONM 和 OCaml 获取 json 文件中成员元素的特定出现的所有位置的列表。我知道如何在 YoJSON 中做到这一点,但无法在 jsonm 中找到方法。

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))
4

0 回答 0