Java 如何使用Jackson在嵌套的JsonNode中获取集合
我有一个低于JSON的结构。我需要使用Jackson库来解析它。我正在构建一个web服务,它在POST方法体中接受下面的JSONJava 如何使用Jackson在嵌套的JsonNode中获取集合,java,json,jackson,Java,Json,Jackson,我有一个低于JSON的结构。我需要使用Jackson库来解析它。我正在构建一个web服务,它在POST方法体中接受下面的JSON { "organization": { "products": [ "foo", "bar", "baz" ] }, "mission" : "to be the best in domain" } 到目前为止,我使用的是简单的JSON主体
{
"organization": {
"products": [
"foo",
"bar",
"baz"
]
},
"mission" : "to be the best in domain"
}
到目前为止,我使用的是简单的JSON主体,它没有嵌套的JSON元素,比如在本例中,organization
是另一个包含一组产品的JSON节点
此JSON密钥不是必需的,我正在接受/存储organization
JSON中的JsonNode
。做下面的检查
组织
为空组织
不为空,并且它有产品
键JsonNode
获取一组板,并将其存储在Java的HashSet中
我的预期O/p应该是从我的组织
JsonNode提取一组板
附言:-我想我必须使用ObjectMapper
,但找不到直接获取集合的方法。看起来我需要使用一些我不太熟悉的JsonParser。您可以为自己的目的创建DTO(数据传输对象)。嵌套对象可以具有如下结构:
class Organization {
List<String> Products;
.....
}
class WebOrganizationRequest {
Organization organization;
String mission;
}
班级组织{
列出产品清单;
.....
}
类WebOrganizationRequest{
组织机构;
弦乐团;
}
通过以这种方式创建对象,您将JSON对象映射到类,当您将JSON作为请求主体类型传入控制器时,Jackson会将其类型转换为WebOrganizationRequest的实例。您是否将其用于spring之类的框架?是的,我使用的是dropwizard,默认情况下jackson for json解析的位置。您能显示您正在执行的代码吗?这种方式我已经知道了,但每次都需要更改代码,如果我向我的
组织添加另一个键,它是嵌套的JSON。这是处理它的一般方式,在spring和dropwizard等框架中它是现成的。将元素添加到组织类中可以让您知道请求中需要哪些参数,并在需要时添加任何验证等。通常,在API调用中,我们知道控制器应该期望什么。因此,更新代码应该不会太麻烦。感谢您提供的附加信息,如果您能提供一些参考以了解更多信息,那将非常好。您可以在dropwizard文档()中找到更多信息。您可以看到它们如何在post请求主体中映射通知类。为了使事情变得更简单,还可以使用Lombok(),它使用注释向类中添加setter和getter方法,从而使操作更简单。