Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Android上解析asmx返回JSON_Android_Asp.net_Json - Fatal编程技术网

在Android上解析asmx返回JSON

在Android上解析asmx返回JSON,android,asp.net,json,Android,Asp.net,Json,我有一个ASP.NET3.5WebService(asmx),它返回看似有效的JSON。我已经使用在线验证器(JSONLint.com)验证了返回的JSON,它说它是有效的。我不知道如何解析这个字符串 { "d": "{\"returnType\":\"authToken\",\"returnData\":\"b1ec28b8-3fca-427a-bbce-8802fb95d94b\"}" } 下面是我的代码 public static JSONObject DotNetJSONRes

我有一个ASP.NET3.5WebService(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;
    }

}
这样试试

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;
   }
}

试试这个。在示例响应中,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;
    }

}
公共静态JSONObject DotNetJSONResponse(字符串原始)引发异常{
JSONObject joRaw;
试一试{
joRaw=新的JSONObject(原始);
字符串t=joRaw.getString(“d”);
System.out.println(t);\\<------------
JSONObject joD=新的JSONObject(t);
返回作业;
}捕获(JSONException e){
//TODO自动生成的捕捉块
e、 printStackTrace();
返回null;
}
}

我尝试了你的建议。t={“returnType”:“authToken”,“returnData”:“b1ec28b8-3fca-427a-bbce-8802fb95d94b”}输出是什么?有什么异常吗?当我单步遍历代码时,行JSONObject joD=newjsonobject(t);似乎引发了异常。箭头向下跳转以返回null;(没有e.printStackTrace();发生),但随后返回一个JSONobject到调用行,并返回正确的数据。我对代码进行了一些编辑,请确保
t
在其中获取了正确的JSON字符串。t中的值为“{”returnType:“authToken”,“returnData:“b1ec28b8-3fca-427a-bbce-8802fb95d94b”}”(无引号)。该方法确实返回了一个包含正确数据的JSONObject,但仍然被捕获。