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。
我如何使用 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。