在Android上解析asmx返回JSON
我有一个ASP.NET3.5WebService(asmx),它返回看似有效的JSON。我已经使用在线验证器(JSONLint.com)验证了返回的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
{
"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,但仍然被捕获。