【发布时间】:2012-03-06 09:43:31
【问题描述】:
假设我从服务器返回了以下 JSON 字符串:
{
"response":{
"imageInstances":{
"one":{
"id":"1",
"url":"ONE"
},
"two":{
"id":"2",
"url":"TWO"
}
}
}
}
在 codehaus Jackson @JsonProperty 中,我如何从中获取 HashMap 对象?
import org.codehaus.jackson.annotate.JsonAnySetter;
import org.codehaus.jackson.annotate.JsonProperty;
import java.util.HashMap;
import java.util.List;
public class MSShow {
@JsonProperty("imageInstances") private HashMap<String, Temp> images;//// HOW DO YOU CONVERT IT TO HASH MAP??????
@JsonAnySetter public void ignoredField(String key, Object value) { }
private class Temp {
@JsonProperty("id") private String id;
@JsonProperty("url") private String url;
@JsonAnySetter public void ignoredField(String key, Object value) { }
}
}
归根结底,我希望根据返回的 JSON 字符串生成的哈希图是 (用java伪写)
如果我打电话,应该返回一个带有字段 id=1 和 url=ONE 的 Temp 对象
images.get("one")
如果我打电话,应该返回一个带有字段 id=2 和 url=TWO 的 Temp 对象
images.get("two")
【问题讨论】:
-
没有进行任何认真的钻研或测试,但是,首先,我会说杰克逊可能对您的嵌套类
Temp存在问题 a) 私有,b) 内部类(非静态,因此绑定到包含MediaSlideShow的实例)。所以我会先制作Temppublic static。 -
您是否特别需要
HashMap?如果没有,请考虑使用Map<String, Temp>,让 Jackson 担心要使用什么实现。 -
谢谢芽!谢谢你的回复
标签: java json dictionary jackson