0

我有一个 ASP.Net 3.5 Webservice (asmx),它返回似乎是有效的 JSON。我已经使用在线验证器 (JSONLint.com) 验证了返回的 JSON,它说它是有效的。我不知道如何解析这个字符串。

{
    "d": "{\"returnType\":\"authToken\",\"returnData\":\"b1ec28b8-3fca-427a-bbce-8802fb95d94b\"}"
}

下面是我的代码。

public static JSONObject DotNetJSONResponse(String raw) throws Exception {
    JSONObject joRaw;
    try {
        joRaw = new JSONObject(raw);
        JSONObject joD = joRaw.getJSONObject("d");
        return joD;
    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        return null;
    }

}
4

2 回答 2

0

试试这个方法

public static JSONObject DotNetJSONResponse(String raw) throws Exception {
JSONObject joRaw;
  try {
      joRaw = new JSONObject(raw);
      String str1 = joRaw.getString("d");
      JSONObject joD = new JSONObject(str1);
      return joD;
      } catch (JSONException e) {
         // TODO Auto-generated catch block
        e.printStackTrace();
        return null;
   }
}
于 2012-08-16T03:52:04.140 回答
0

试试这个。在您的示例响应中,d是一个属性,而不是 JSONObject。所以必须先解析字符串,然后将d字符串转换为JSONObject。

public static JSONObject DotNetJSONResponse(String raw) throws Exception {
    JSONObject joRaw;
    try {
        joRaw = new JSONObject(raw);
        String t=joRaw.getString("d");
        System.out.println(t);                  \\< ---------- 
        JSONObject joD = new JSONObject(t);
        return joD;
    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        return null;
    }

}
于 2012-08-16T03:52:27.023 回答