我发出了一个unirest请求,并以jsonnode的形式得到了响应,我正试图将其转换为map<string,boolean>,但是到目前为止还没有任何效果。以下是我迄今为止尝试过的几件事:
使用objectmapper
ObjectMapper mapper = new ObjectMapper();
Map<String, Boolean> responseMap = mapper.convertValue(myJsonNode, new TypeReference<Map<String, Boolean>>(){});
但是,当我稍后迭代时,会出现以下错误: java.lang.IllegalArgumentException: No serializer found for class org.json.JSONObject and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: com.mashape.unirest.http.JsonNode["array"])
使用gson
JSONObject jsonObject = myJsonNode.getObject();
HashMap<String,Boolean> responseMap = new Gson().fromJson(jsonObject.toString(),HashMap.class);
但是,这给了我解析错误: java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Boolean
然而,即使我将它改为字符串而不是布尔值,它也告诉我不能将布尔值转换为字符串????奇怪的
将jsonnode转换为字符串,然后转换为Map:
字符串myjson=pocoresponsejson.tostring();objectmapper mapper=新的objectmapper();map<string,string>responsemap=null;responsemap=mapper.readvalue(myjson,map.class);
然而,这仍然给了我这个错误 java.lang.ClassCastException: java.lang.Boolean cannot be cast to java.lang.String
因为http响应的Map值是布尔值。
无论哪种方法我都可以,我会做任何有效的事情。提前谢谢!
暂无答案!
目前还没有任何答案,快来回答吧!