我需要确定传递此特定代码的输入模式。我不明白为什么错误消息的值尽管作为字符串传递,但在node.get("errorMessage").textValue()
上却为null。请继续使用。忽略编码器/解码器。
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();
}
}
答案 0 :(得分:0)
因为errorMessage
的返回值为JsonNode
。因此,您首先获得JsonNode
,然后才能获得值。
JsonNode errorNode = node.get("errorMessage");
String status = String.valueOf(errorNode.get("status").asInt());
String statusMessage = errorNode.get("statusMessage").textValue();
如果您想将errorMessage
用作string
,可以尝试:
node.get("errorMessage").toString()