Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有Java JSON反序列化程序将字符串解码为列表字典或基本类型字典列表_Java_Json_Primitive - Fatal编程技术网

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

是否有Java JSON反序列化程序将字符串解码为列表字典或基本类型字典列表,java,json,primitive,Java,Json,Primitive,我需要从数据库中提取不基于标准对象的JSON文档 有没有一种方法可以使用JAVA将这些文档“反序列化”为原始对象(字符串、int、bool等)的列表和字典 有哪家图书馆可以在两个方向都这样做? 换句话说,我正在寻找System.Runtime.Serialization.Json的Java计数器部分。对不起,Json没有任何关于数据类型的元信息,因此除了字符串列表之外,没有机会转换回任何不基于标准对象的内容 更新:我可以考虑用未分类的JSON字符串制作带有Groovy的POGO。然后还可以使用动

我需要从数据库中提取不基于标准对象的JSON文档

有没有一种方法可以使用JAVA将这些文档“反序列化”为原始对象(字符串、int、bool等)的列表和字典

有哪家图书馆可以在两个方向都这样做?
换句话说,我正在寻找System.Runtime.Serialization.Json的Java计数器部分。对不起,Json没有任何关于数据类型的元信息,因此除了字符串列表之外,没有机会转换回任何不基于标准对象的内容


更新:我可以考虑用未分类的JSON字符串制作带有Groovy的POGO。然后还可以使用动态对象。也许您也可以利用。

对不起,JSON没有任何关于数据类型的元信息,因此除了字符串列表之外,没有机会将任何不基于标准对象的内容转换回来


更新:我可以考虑用未分类的JSON字符串制作带有Groovy的POGO。然后还可以使用动态对象。也许你也可以利用。

而不是试图强迫JSON进入一个难以使用的
Map
List
,我推荐一个可以将JSON解析为树模型的库。虽然很多图书馆都可以做这类事情,但我最喜欢的是。您可以使用它的
JsonParser
类将JSON解析为以根开始的树。一旦拥有了
jsonement
,它应该比一些
对象
更容易使用,这些对象可能是
列表
,也可能是
映射

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) {
    ...
  }
}

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

我推荐一个可以将JSON解析为树模型的库,而不是试图将JSON强制转换为难以使用的
Map
List
。虽然很多图书馆都可以做这类事情,但我最喜欢的是。您可以使用它的
JsonParser
类将JSON解析为以根开始的树。一旦拥有了
jsonement
,它应该比一些
对象
更容易使用,这些对象可能是
列表
,也可能是
映射

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) {
    ...
  }
}

使用这些对象也可以很容易地构建JSON树。

几乎每个Java库都可以做到这一点,您是否真的尝试过找到一些东西

例如,与您一起执行以下操作:

ObjectMapper mapper = new ObjectMapper();
Map<String,Object> map = mapper.readValue(json, Map.class);

有关更多示例,您可以查看。

几乎所有的Java库都可以做到这一点,您是否确实尝试过找到一些东西

例如,与您一起执行以下操作:

ObjectMapper mapper = new ObjectMapper();
Map<String,Object> map = mapper.readValue(json, Map.class);

有关更多示例,您可以查看。

Flexjson肯定能做到这一点。下一行将jsonString反序列化为HashMap

Map<String, String> map = new flexjson.JSONDeserializer().deserialize(jsonString);
Map Map=new flexjson.JSONDeserializer().deserialize(jsonString);

Flexjson肯定能做到这一点。下一行将jsonString反序列化为HashMap

Map<String, String> map = new flexjson.JSONDeserializer().deserialize(jsonString);
Map Map=new flexjson.JSONDeserializer().deserialize(jsonString);

我知道JSON只支持少数没有元信息的类型。我需要的JSON字符串只是嵌套的字典和列表。我需要作为字符串嵌套的最后一个级别。没有评论的向下投票是不礼貌的。如果有什么不对劲,首先应该给你一个提示。你因为给出错误的建议而被否决。有很多json库可以反序列化为更复杂的类型定义。哪些字段,而不为元信息添加额外字段?最后是字符串、数字、布尔值和它们的数组。因此,反序列化Json就是猜测要反序列化的类型。我知道Json只支持少数没有元信息的类型。我需要的JSON字符串只是嵌套的字典和列表。我需要作为字符串嵌套的最后一个级别。没有评论的向下投票是不礼貌的。如果有什么不对劲,首先应该给你一个提示。你因为给出错误的建议而被否决。有很多json库可以反序列化为更复杂的类型定义。哪些字段,而不为元信息添加额外字段?最后是字符串、数字、布尔值和它们的数组。所以反序列化Json就是猜测要反序列化的类型。有许多库可以这样做(请参阅)。大多数处理一些“内部”对象,这些对象相当于
List
Map
,以便更容易地处理结构中类型的动态性质。(处理
HashMap
不是很有趣。)是的。有许多库可以这样做(请参阅)。大多数处理一些“内部”对象,这些对象相当于
List
Map
,以便更容易地处理结构中类型的动态性质。(处理
HashMap
不是很有趣。)