Moshi - 解析未知 json 键

Moshi - Parse unknown json keys

我如何使用 moshi 解析一个 json 结构,该结构在编译时具有未知的键:

"foo": {
  "name": "hello",
  "bar": {
    "unknownKey1": {
      "a": "1"
      }
    },
    "unknownKey2": {
      "b": "2"
    },
    "unknownKeyX": {
      "c": "X"
    }
  },
  "properties": {...}
}

我尝试为 JSONObject 使用 @FromJson 适配器,但日志只是说 json 是空的 {}(我希望 {"unknownKey1": { ... etc ...} )

   class Foo {

        @Json(name = "name")
        String name;
        @Json(name = "bar")
        Bar bar;

        static class Bar {

        }
    }

class BarAdapter {

    @FromJson
    Bar fromJson(JSONObject json) {
        Log.d("xxx", "got " + json.toString());
        return new Bar();
    }
}

一旦我可以到达 json 内栏,我可以手动迭代它以添加到列表或其他东西(因为我不知道会有多少项目)。

这样使用:

         Moshi moshi = new Moshi.Builder()
        .add(new BarAdapter())
        .add(new LinkedHashMapConverter())
        .build();

我还必须添加 LinkedHashMapConverter 来安抚 moshi 神,但是向其添加日志,它的方法永远不会被调用(这可能是我真正的 json 的一个单独问题)。

有什么想法吗?

使用地图。

@FromJson
Bar fromJson(Map<String, Baz> json) {
    Log.d("xxx", "got " + json.toString());
    return new Bar();
}

如果您也不知道地图值的类型,则不能使用 Object。