Java 使用Jackson将Json子对象转换为HashMap
我想转换以下json字符串的Java 使用Jackson将Json子对象转换为HashMap,java,arrays,json,jackson,Java,Arrays,Json,Jackson,我想转换以下json字符串的bpi字段: { "bpi": { "2017-10-15": 5697.3917, "2017-10-16": 5754.2213, "2017-10-17": 5595.235, "2017-10-18": 5572.1988, "2017-10-19": 5699.5838, "2017-10-20": 5984.0863, "2017-10-
bpi
字段:
{
"bpi": {
"2017-10-15": 5697.3917,
"2017-10-16": 5754.2213,
"2017-10-17": 5595.235,
"2017-10-18": 5572.1988,
"2017-10-19": 5699.5838,
"2017-10-20": 5984.0863,
"2017-10-21": 6013.2288,
"2017-10-22": 5984.9563,
"2017-10-23": 5895.2988,
"2017-10-24": 5518.85,
"2017-10-25": 5733.9038,
"2017-10-26": 5888.145,
"2017-10-27": 5767.68,
"2017-10-28": 5732.825,
"2017-10-29": 6140.5313,
"2017-10-30": 6121.8,
"2017-10-31": 6447.6675
},
"disclaimer": "This data was produced from the CoinDesk Bitcoin Price Index. BPI value data returned as USD.",
"time": {
"updated": "Nov 1, 2017 13:49:57 UTC",
"updatedISO": "2017-11-01T13:49:57+00:00"
}
}
到hashmap中-最好是Map
,但是Map
也可以(之后我将不得不处理它)。我在某个地方读过如何将json数组转换为java数组,但是由于所需的数组被包装在bpi
子字段中,我不知道如何访问它。你能帮我一下吗
非常感谢对于杰克逊来说,这是非常直截了当的。首先定义一个类来保存值:
@JsonIgnoreProperties(ignoreUnknown=true)
公开课Foo{
私有地图;
//接球手和接球手
}
然后读取JSON字符串:
ObjectMapper mapper=new ObjectMapper();
registerModule(新的JavaTimeModule());
Foo-Foo=mapper.readValue(json,Foo.class);
或者,您可以使用:
ObjectMapper mapper=new ObjectMapper();
registerModule(新的JavaTimeModule());
JsonNode=mapper.readTree(json.get(“bpi”);
ObjectReader=mapper.reader(新类型引用(){});
Map bpi=reader.readValue(节点);
支持来自模块 添加项目中的以下依赖项:
com.fasterxml.jackson.datatype
在你的例子中:
mapper.registerModule(新的JavaTimeModule());
如果您喜欢使用而不是,那么您不需要添加任何依赖项,也不需要注册任何模块。在上面的例子中只使用而不是。但是我建议您改为使用。而且jackson还负责从字符串
到日期
/本地日期
?@milkpirate Yes的转换。请参阅我的最新答案。需要依赖项jackson-datatype-jsr310
。