Json as .textValue()-杰克逊

时间:2018-09-05 13:21:28

标签: java jackson

我需要确定传递此特定代码的输入模式。我不明白为什么错误消息的值尽管作为字符串传递,但在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();
            }

    }

1 个答案:

答案 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()