【发布时间】:2016-05-04 21:55:36
【问题描述】:
我有时会得到一个对象,有时会得到一个列表。有没有办法使用 Jackson 库使用相同的 Java 模型来处理以下 2 条 json 消息。
Message1:下面有一个“产品”列表
{
"id": 1234,
"products": [
{
"producttype":"Household",
"name": "product1",
"price": 100
},
{
"producttype":"Electronics",
"name": "product2",
"price": 200
}
]
}
Message2:下面的“产品”下有一个元素
{
"id": 1234,
"products": {
"producttype":"Household",
"name": "product1",
"price": 100
}
}
我有以下 Java 模型:
@JsonIgnoreProperties(ignoreUnknown = true)
public class Example
{
private String id;
private Products[] products;
public String getId ()
{
return id;
}
public void setId (String id)
{
this.id = id;
}
public Products[] getProducts ()
{
return products;
}
public void setProducts (Products[] products)
{
this.products = products;
}
}
但是当我尝试将它转换为 Message2 时,这会失败,因为它是一个对象。 ObjectMapper 映射器 = 新 ObjectMapper(); 示例 obj = mapper.readValue(originalMessage, Example.class);
您能帮我处理上述情况吗?
我正在使用以下库:
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.13</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-jaxrs</artifactId>
<version>1.9.13</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-xc</artifactId>
<version>1.9.13</version>
</dependency>
谢谢!
【问题讨论】:
-
你可以做你想做的事,但你真的应该告诉任何向你发送 Message2 格式的东西的人停止向你发送不良数据。他们应该发送一个包含单个元素的列表。