猿问

如何在 Java 中将 LinkedHashMap 转换为 Map<String, Object>?

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


{

        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);

但我收到错误:


java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to AvailableInfo

下面是 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>

    }

知道如何解决吗?我尝试将输入 json 更改为:


   {

            A:  { isAvailable : true} ,

            VV:  { isAvailable : false} ,

            B45:  { isAvailable : null} 

    }

但仍然无法正常工作。


紫衣仙女
浏览 1748回答 3
3回答

Helenr

首先使用以下行转换它,然后您可以使用数据:List<?&nbsp;extends&nbsp;Map<String,&nbsp;String>>&nbsp;resultList&nbsp;=&nbsp;new&nbsp;ArrayList<LinkedHashMap<String,&nbsp;String>>();

慕妹3242003

要将 json 转换为 Map,json 必须采用以下形式:{&nbsp; &nbsp; &nbsp; &nbsp; A:&nbsp; { isAvailable : true} ,&nbsp; &nbsp; &nbsp; &nbsp; VV:&nbsp; { isAvailable : false} ,&nbsp; &nbsp; &nbsp; &nbsp; B45:&nbsp; { isAvailable : null}&nbsp;}之后以下代码返回Map<String, AvailableInfo>:Map<String, AvailableInfo> readValue = mapper.readValue(json, Map.class);的输出System.out.println(readValue);:{A={isAvailable=true}, VV={isAvailable=false}, B45={isAvailable=null}}
随时随地看视频慕课网APP

相关分类

Java
我要回答