Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Jackson将Json子对象转换为HashMap_Java_Arrays_Json_Jackson - Fatal编程技术网

Java 使用Jackson将Json子对象转换为HashMap

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-

我想转换以下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-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