我需要的是识别通过此特定代码的输入模式。我不明白为什么errormessage的值,尽管它是以字符串的形式传递的,但在node.get("errorMessage").textValue()上却是空的。请使用same.Ignore编码器/解码器。
public static void main(String args[]) throws JsonProcessingException, IOException{
String err="{\"statusMessage\":\"InternalServerError\",\"status\":\"500\"}";
String errormessage="{\"errorMessage\":"+err+"}";
ByteBuffer buff=Charset.forName("UTF-8").encode(errormessage);
String response=Charset.forName("UTF-8").decode(buff).toString();
ObjectMapper mapper = new ObjectMapper();
JsonNode node = mapper.readTree(response);
try{
String errorMessageText = node.get("errorMessage").textValue();
JsonNode errorNode = mapper.readTree(errorMessageText);
String status = String.valueOf(errorNode.get("status").asInt());
String statusMessage = errorNode.get("statusMessage").textValue();
System.out.println(status);
System.out.println(statusMessage);
}
catch(Exception e){
e.printStackTrace();
}
}发布于 2018-09-05 21:42:47
因为errorMessage的返回值是JsonNode。所以你首先得到JsonNode,然后你就可以得到值了。
JsonNode errorNode = node.get("errorMessage");
String status = String.valueOf(errorNode.get("status").asInt());
String statusMessage = errorNode.get("statusMessage").textValue();如果你想以string的形式获得errorMessage,你可以尝试:
node.get("errorMessage").toString()https://stackoverflow.com/questions/52186206
复制相似问题