如何在JAVA中解析没有第三方的JSON字符串

时间:2016-01-05 08:49:10

标签: java json string exception-handling

我有以下JSON响应:

enter image description here

这意味着服务器有异常。

如何解析我从服务器获得的任何JSON字符串是否存在异常而没有任何第三方?

一旦我确定JSON包含异常,我需要获取代码/消息/状态值。

2 个答案:

答案 0 :(得分:1)

是否允许Regex(核心Java API的一部分)?您应该能够使用它从更大的字符串中提取String。

Pattern codePattern = Pattern.compile("\"code\": \".*\"");
        Matcher matcher = codePattern.matcher(json);

        if (matcher.find()) {
            System.out.println("\ncode: " + matcher.group(0));
        }

(冲洗并重复以获取信息和状态)

请注意我离开了我的IDE,因此无法测试此实际的REGEX方面,但模式/匹配器代码应该是合理的(基于https://stackoverflow.com/a/4662265/1600472)。

答案 1 :(得分:1)

根据Crazy Dino的评论,这是我问题的正确解决方案:

        String json = str1;  // sample json string
        Pattern codePattern = Pattern.compile("\"code\"\\s*:\\s*\"([^,]*)\",");
        Pattern messagePattern = Pattern.compile("\"message\"\\s*:\\s*\"([^,]*)\",");
        Pattern statusPattern = Pattern.compile("\"status\"\\s*:\\s*\"(FAILURE)\"");

        Matcher code_matcher = codePattern.matcher(json);
        Matcher message_matcher = messagePattern.matcher(json);
        Matcher status_matcher = statusPattern.matcher(json);

        if (code_matcher.find() && message_matcher.find() && status_matcher.find()) {

            System.out.println("\nException found!");

            System.out.println("\n" + code_matcher.group(1));
            System.out.println("\n" + message_matcher.group(1));
            System.out.println("\n" + status_matcher.group(1));
        }

输出:

Exception found!

INVALID_PARAMETER_VALUE

Invalid value for parameter: language_code

FAILURE