比如说我有亲子关系。我的父母看起来像
{
childrens: [...]
}
假设我想要(反)序列化的模型在父对象和子对象之间有一个中间对象。
class Parent {
Intermediate intermediate
}
class Intermediate {
Child[] children;
}
我可以将Jackson配置为在将json反序列化到模型中时创建该中间对象,并在序列化回json时同样跳过该中间对象吗?
在这种情况下,您可以使用@JsonUn包装
注释。这是一个与您的帖子结构相似的示例
父母亲JAVA
import com.fasterxml.jackson.annotation.JsonUnwrapped;
public class Parent {
@JsonUnwrapped
private Intermediate intermediate;
public Intermediate getIntermediate() {
return intermediate;
}
public void setIntermediate(Intermediate intermediate) {
this.intermediate = intermediate;
}
}
中间的JAVA
public class Intermediate {
private Child[] children;
public Child[] getChildren() {
return children;
}
public void setChildren(Child[] children) {
this.children = children;
}
}
Child.java
public class Child {
private String name;
private Integer age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
示例文档
{
"children": [
{
"name": "Foo",
"age": 20
},
{
"name": "Bar",
"age": 22
}
]
}
测试驱动程序
ObjectMapper mapper = new ObjectMapper();
Parent parent = mapper.readValue(json, Parent.class);
for (Child child : parent.getIntermediate().getChildren()) {
System.out.println("Child: " + child.getName() + " is " + child.getAge() + " years old.");
}
产生以下输出:
Child: Foo is 20 years old.
Child: Bar is 22 years old.
我想使用Spring的RestTemplate plus Jackson来使用Web服务。我已经学习了几本教程,并且已经达到了创建DAO的目的。这是我获取所有域对象的方法: 但我的Web服务不会立即返回Station对象数组,而是以这种方式返回一个更具语义的表达式: 所以我的问题是,我不知道如何“告诉”RestTemplate在“stations”指示符之后立即解析对象列表,而不创建临时对象,这似
我需要使用Jackson解析器来处理包含非标准单引号而不是双引号的json。以前有人问过这个问题: 配置Jackson以反序列化单引号(无效)JSON 但是“JsonParser”类在杰克逊 2.0 中不再存在。看起来配置对象映射器的较新方法是这样的: 但我找不到ALLOW_SINGLE_QUOTES功能。也许我只是没看到。 如何在Jackson 2.x中反序列化单引号? 编辑 OOPS,没关系。
问题内容: 我的问题很简单:我有以下简单的类: 我正在尝试处理以下JSON: 显然,这里存在一个问题(“ blah”无法解析为int) 以前,Jackson抛出类似org.codehaus.jackson.map.JsonMappingException的内容:无法从字符串值’blah’构造java.lang.Integer的实例:不是有效的Integer值 我同意这一点,但是我想在某个地方注册一
我想知道为什么没有一种坚定的方式来与杰克逊合作。我只想解析JSON字符串: 但我真的很困惑,我应该导入什么来实现这一点。根据这个链接,我尝试导入映射器asl。jar。但我得到了这个编译错误: 然后我尝试导入jackson-core-2.4.2和jackson-databind-2.4.2。所以没有编译错误,但我得到了这个运行时异常(在映射器定义行中): 请指导我应该导入哪些内容才能使用Jackso
问题内容: 在Jersey上使用Jackson 处理器时,何时以及为何需要在两者之间使用注释? 杰克逊(Jackson)还提供了自己的服务提供商以直接使用。这种方法缺少什么?还是为什么我比其他人更喜欢 ps:我也用弹簧 问题答案: 为了生成JSON,通常只需指定即可。但是,这将默认采用JAXB路由。 使用Object-> JAXB-> JSON,您必须注释要映射的类。这可以很好地工作,但是一旦您要
我如何告诉Jackson忽略JSON名称? 我有以下POJO: 当我有这样的东西: “ABCName”:“foo”,然后杰克逊没有认出它抛出错误。 它期望的是: “abcName”:“foo”。 代码: 输出:{"abcname":"Foo"} 然后我试着用@JsonProperty(“ABCName”)注释ABCName 在我注释并运行代码之后,我得到的是:{“ABCName”:“Foo”,“A