代码之家  ›  专栏  ›  技术社区  ›  Federico klez Culloca

如何在java中处理未知类型的json响应

  •  0
  • Federico klez Culloca  · 技术社区  · 14 年前

    我需要从服务器接收响应(以字符串的形式)。这个响应可以是一个类似

    {"a" : "value", "b" : "value2", ...}
    

    如果请求成功,或者一个字符串

    "ERROR"
    

    出错时。

    org.json.JSONObject ,如何检查哪一个已退回?


    编辑

    if(JSONString.equals("\"ERROR\"") {
        //handle error
    } else {
        //parse actual object
    }
    

    在哪里? JSONString

    3 回复  |  直到 14 年前
        1
  •  2
  •   Philippe A.    14 年前

    字符串“ERROR”不是有效的JSON。看看这个 JSONWriter API,您将看到无法生成类似“ERROR”的JSON字符串。

    如果您总是希望将服务器响应视为json,则需要让它返回{“error”:true}或{error:false}之类的内容。然后,您的程序将能够反序列化检查错误字段。

        2
  •  0
  •   hvgotcodes    14 年前

        3
  •  0
  •   Jörn Horstmann    14 年前

    在我看来,带引号的字符串是一个有效的json值。org的语法没有将object或array定义为特殊的topleve产品,rfc4627将json文本定义为object或array,但是json值也可以是数字、字符串、布尔值或null。

    从我对org.json javadoc的阅读来看,以下应该是可行的:

    Object value = new JSONTokener(inputString).nextValue();
    if (value instanceof String && ((String)value).equals("ERROR")) {
        // handle error
    } else if (value instanceof JSONObject) {
        // handle response data
    }