【发布时间】:2014-12-30 18:19:24
【问题描述】:
我有一个具有相同键但不同值的 json 文件,如下所示,
{
"domains" : {
"A" : {
"name" : "a",
"type" : "a1"
},
"B" :{
"name" : "r",
"type" : "g1"
},
"A" : {
"name" : "b",
"type" : "b1"
}
}
}
来自外部系统。 如何将json转成java map对象并访问key的不同值:A
我正在使用类似下面的东西,
map = mapper.readValue(json, new TypeReference<HashMap<String,String>>(){});
它返回一个带有唯一键的映射。但我需要一个地图对象来保存 json 文件中的所有数据。
无论如何要做到这一点?
【问题讨论】:
-
解析此类 JSON 的结果是未定义的“按定义”;使用 Jackson 能够做到这一点的唯一方法是自己解析它(实例化
JsonParser; 并逐个读取令牌)。但是,首先,您应该用大锤敲击该 JSON 的生产者,并告诉他/她去阅读 RFC 7159。 -
顺便说一句,相关文字:RFC 7159, section 4:“当对象中的名称不唯一时,接收到此类对象的软件的行为是不可预测的。”