Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.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/4/json/13.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中将LinkedHashMap转换为Map?_Java_Json_Jackson - Fatal编程技术网

如何在Java中将LinkedHashMap转换为Map?

如何在Java中将LinkedHashMap转换为Map?,java,json,jackson,Java,Json,Jackson,我正在尝试将地图转换为地图。 我有一个json和一个对象: { A: { availableInfo: { isAvailable : true} }, VV: { availableInfo: { isAvailable : false} }, B45: { availableInfo: { isAvailable : null} } } 目标是: @Builder @Getter @AllArgsConstructor @JsonIgnore

我正在尝试将地图转换为地图。 我有一个json和一个对象:

{
        A: { availableInfo: { isAvailable : true} },
        VV: { availableInfo: { isAvailable : false} },
        B45: { availableInfo: { isAvailable : null} }
}
目标是:

@Builder
@Getter
@AllArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class AvailableInfo {

    @JsonProperty("isAvailable")
    private Boolean isAvailable;

    public AvailableInfo() {
    }
}
我试过:

Map<String, AvailableInfo>  response = getResponse(query, Map.class);
下面是getResponse方法:

private <T> T getResponse(final RestURI query, final Class<T> responseClass) throws IOException {
        T response = null;

        final RestResponse<Record> tempResponse = client.call(GET, query);

        if (isResponseOK(tempResponse, query)) {
            byte[] payloads = {};

            for (Record rec : tempResponse.getResponses()) {
                final byte[] payload = rec.getPayload();
                payloads = ArrayUtils.addAll(payloads, payload);
            }
            final Reader reader = newReader(payloads)
            response = jsonObjectMapper.readValue(reader, responseClass);
        }

        return response; //returns Map<String, LinkedHashMap>
    }

但仍然不工作。

首先使用下面的行转换它,然后您可以播放数据:

List<? extends Map<String, String>> resultList = new ArrayList<LinkedHashMap<String, String>>();

要将json转换为映射,json必须采用以下格式:

{
        A:  { isAvailable : true} ,
        VV:  { isAvailable : false} ,
        B45:  { isAvailable : null} 
}
之后,以下代码返回Map:


尝试将您的方法签名更改为

private <T> T getResponse(final RestURI query, final TypeReference typeReference) throws IOException {
    T response = null;

    final RestResponse<Record> tempResponse = client.call(GET, query);

    if (isResponseOK(tempResponse, query)) {
        byte[] payloads = {};

        for (Record rec : tempResponse.getResponses()) {
            final byte[] payload = rec.getPayload();
            payloads = ArrayUtils.addAll(payloads, payload);
        }
        final Reader reader = newReader(payloads)
        response = jsonObjectMapper.readValue(reader, typeReference);
    }

    return response; //returns Map<String, AvailableInfo>
}

我尝试了它,并为我工作

我阅读错误消息的方式它试图将LinkedHashMap转换为值。所以你可能真的有一张地图。。。留作练习,让读者确定LinkedHashMap参数的类型-例如,它是Map还是其他什么?@Yeah。json是我试图转换为Map的Map,您如何调用getResponse?传递给responseClass的值是什么?此json的可能重复项:{A:{isAvailable:true},VV:{isAvailable:false},B45:{isAvailable:null}应返回映射。这是什么错误?我正在尝试获取一个映射这是控制台{a中println的输出=AvailableInfo@68be2bc2,VV=AvailableInfo@28feb3fa,B45=AvailableInfo@675d3402}
{
        A:  { isAvailable : true} ,
        VV:  { isAvailable : false} ,
        B45:  { isAvailable : null} 
}
Map<String, AvailableInfo> readValue = mapper.readValue(json, Map.class);
{A={isAvailable=true}, VV={isAvailable=false}, B45={isAvailable=null}}
private <T> T getResponse(final RestURI query, final TypeReference typeReference) throws IOException {
    T response = null;

    final RestResponse<Record> tempResponse = client.call(GET, query);

    if (isResponseOK(tempResponse, query)) {
        byte[] payloads = {};

        for (Record rec : tempResponse.getResponses()) {
            final byte[] payload = rec.getPayload();
            payloads = ArrayUtils.addAll(payloads, payload);
        }
        final Reader reader = newReader(payloads)
        response = jsonObjectMapper.readValue(reader, typeReference);
    }

    return response; //returns Map<String, AvailableInfo>
}
TypeReference typeReference  = new TypeReference<Map<String, AvailableInfo>>() {
    };
Map<String, AvailableInfo> map = (Map<String, AvailableInfo>) getResponse(typeReference);
 {
        A:  { isAvailable : true} ,
        VV:  { isAvailable : false} ,
        B45:  { isAvailable : null} 
}