如何使用moshi解析具有编译时未知键的json结构:
"foo": {
"name": "hello",
"bar": {
"unknownKey1": {
"a": "1"
}
},
"unknownKey2": {
"b": "2"
},
"unknownKeyX": {
"c": "X"
}
},
"properties": {...}
}我尝试为@FromJson使用JSONObject适配器,但是日志中只说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的另一个问题)。
有什么想法吗?
发布于 2016-05-06 02:02:49
用地图。
@FromJson
Bar fromJson(Map<String, Baz> json) {
Log.d("xxx", "got " + json.toString());
return new Bar();
}如果您也不知道映射值的类型,则不能使用对象。
https://stackoverflow.com/questions/37060032
复制相似问题