Java 如何使用jackson获得json值?

Java 如何使用jackson获得json值?,java,json,jackson,Java,Json,Jackson,我想获得标题值 我试着 但它返回null 如何使用jackson获取title值?您可以为这个json结果构建一个类,然后从中读取 公共类结果{ 私有JsonNode搜索信息; 私有JsonNode[]搜索; } //然后读: Result testToJson=objectMapper.readValue(test,Result.class); System.out.println(testToJson.getSearches(0.get(“title”)); 您可以为这个json结果构建一

我想获得
标题

我试着

但它返回null


如何使用jackson获取
title
值?

您可以为这个json结果构建一个类,然后从中读取

公共类结果{
私有JsonNode搜索信息;
私有JsonNode[]搜索;
}
//然后读:
Result testToJson=objectMapper.readValue(test,Result.class);
System.out.println(testToJson.getSearches(0.get(“title”));

您可以为这个json结果构建一个类,然后从中读取

公共类结果{
私有JsonNode搜索信息;
私有JsonNode[]搜索;
}
//然后读:
Result testToJson=objectMapper.readValue(test,Result.class);
System.out.println(testToJson.getSearches(0.get(“title”));

不可能将JSON读入这样的泛型类实例,因为有关泛型的信息在编译时使用,并且在程序运行时已经丢失

Jackson使用
TypeReference
的子类实例捕获有关泛型的数据

Map testToJson=objectMapper.readValue(test,new-TypeReference(){});
这种方法的问题在于
Map
几乎从未正确描述过复杂数据(如示例中所示)。该示例不仅包含字符串值,还包含数字甚至嵌套对象

在这种情况下,当您不想或无法编写描述JSON结构的类时,更好的选择是将JSON解析为树结构并遍历它。例如:

JsonNode node=objectMapper.readTree(测试);
字符串title=node.get(“查询”).get(“搜索”).get(0.get(“title”).asText();
整数偏移量=node.get(“continue”).get(“strOffset”).asInt()

不可能将JSON读入这样一个泛型类的实例中,因为有关泛型的信息在编译时使用,并且在程序运行时已经丢失

Jackson使用
TypeReference
的子类实例捕获有关泛型的数据

Map testToJson=objectMapper.readValue(test,new-TypeReference(){});
这种方法的问题在于
Map
几乎从未正确描述过复杂数据(如示例中所示)。该示例不仅包含字符串值,还包含数字甚至嵌套对象

在这种情况下,当您不想或无法编写描述JSON结构的类时,更好的选择是将JSON解析为树结构并遍历它。例如:

JsonNode node=objectMapper.readTree(测试);
字符串title=node.get(“查询”).get(“搜索”).get(0.get(“title”).asText();
整数偏移量=node.get(“continue”).get(“strOffset”).asInt()

您可以将其反序列化到
JsonNode
并使用
JSON指针
获取所需字段:

testToJson.get("title")

您可以将其反序列化为
JsonNode
,并使用
JSON指针
获取必填字段:

testToJson.get("title")

Jackson可以读入一棵
地图树
列表
很好。这不是像OP中那样的
Map
,而是
Map
Jackson可以读入
Map
树和
列表。它不是像OP中那样的
Map
,而是
Map
testToJson.get("title")
JsonNode node = mapper.readValue(jsonFile, JsonNode.class);
String title = node.at("/query/search/0/title").asText();