Moshi - 解析未知的json键

时间:2016-05-05 20:51:27

标签: java json parsing gson moshi

如何用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的一个单独的问题)。

任何想法?

1 个答案:

答案 0 :(得分:5)

使用地图。

<div class="col-lg-9 col-md-9 col-sm-9 col-xs-9">
      <input type="text" class="form-control" id="memberEmergencyContact" name="emergencyContactName" placeholder="Entrer le contact en cas d'urgence">
</div>

如果您还不知道地图值的类型,则无法使用对象。