是否有Java JSON反序列化器将字符串解码为列表的字典或基本类型的字典列表

ada*_*ada 1 java primitive json

我需要从不基于标准对象的数据库JSON文档中撤回.

有没有办法使用JAVA将这些文档"反序列化"为原始对象的列表和字典(string,int,bool等...)

任何可以双向执行此操作的库?换句话说,我正在寻找System.Runtime.Serialization.Json的Java计数器部分

Sta*_*Man 6

几乎http://json.org/上的每个Java库都可以做到这一点,你真的尝试过找东西吗?

例如,杰克逊你会这样做:

ObjectMapper mapper = new ObjectMapper();
Map<String,Object> map = mapper.readValue(json, Map.class);
Run Code Online (Sandbox Code Playgroud)

但创建自己的Java对象来映射通常很方便; 没有必要使用标准对象.例如:

  public class MyType {
    public String name;
    public int age;
    // and so on
    public Date createTime;
  }

  MyType instance = mapper.readValue(json, MyType.class);
Run Code Online (Sandbox Code Playgroud)

有关更多示例,您可以查看Jackson教程.


Col*_*inD 5

而不是试图强迫JSON难以使用Map<String, Object>或者List<Object>,我推荐一个可以将JSON解析为树模型的库.虽然许多图书馆都能做到这一点,但Google Gson是我的最爱.您可以使用其JsonParser类将JSON解析为以根JsonElement开头的树.一旦你拥有它JsonElement,它应该比一些Object可能是一个List并且可能是一个更容易使用Map.

JsonElement e = new JsonParser().parse(someJson);
if (e.isJsonObject()) {
  // JsonObject has many of the same methods as a Map
  JsonObject obj = e.getAsJsonObject();
  String foo = obj.get("foo").getAsString();
  int bar = obj.get("bar").getAsInt();
} else if (e.isJsonArray()) {
  JsonArray array = e.getAsJsonArray();
  // JsonArray implements Iterable and can be used a lot like a List
  for (JsonElement element : array) {
    ...
  }
}
Run Code Online (Sandbox Code Playgroud)

使用这些对象也很容易构建JSON树.