无法解析Java JSON字符串

时间:2017-03-27 00:42:14

标签: java json

从我的服务器获得这样的JSON响应:

String json = getJsonFromServer();

服务器返回此回复(在开头和结尾使用双引号):

"{\"error\":\"Not all required fields have been filled out\"}";

然后我想获取错误字段。我曾尝试使用JSONObject类来获取字符串,但它不起作用。

System.out.println("The error is: " + new JSONObject().getJSONObject(response).getString("error");

3 个答案:

答案 0 :(得分:0)

您似乎使用了错误的JSONObject构造函数;在你的例子中,你试图从newlay创建的对象中获取一个对象 - 它永远不会存在。

试试这个:

String response = "{\"error\":\"Not all required fields have been filled out\"}";

JSONObject json = new JSONObject( response );

String error = json.getString( "error" );

System.out.println( error );

产量

  

并非所有必填字段都已填写

修改

现在你已完全改变了这个问题......

为什么不先剥离第一个和最后一个字符?

所以,如果

String response = "\"{\"error\":\"Not all required fields have been filled out\"}\"";

response = response.substring(1, response.length() - 1));

// Now convert to JSONObject

答案 1 :(得分:0)

你的回复对象有这个字符串吗?

{"错误":"并非所有必填字段都已填写"}

下面的代码打印了预期的输出:

    Object responseObject = "{\"error\":\"Not all required fields have been filled out\"}";
    JSONObject jsonObject = new JSONObject(responseObject.toString());
    String errorContent = jsonObject.getString("error");
    System.out.println(errorContent);

答案 2 :(得分:0)

我试过

String response = "{\"error\":\"Not all required fields have been filled out\"}";
    JSONParser parser = new JSONParser();
    try {
        JSONObject json = (JSONObject) parser.parse(response);

        System.out.println(json.get("error").toString());
    } catch (ParseException ex) {

    }

它有效,您可以尝试,不要忘记添加json lib json-simple