public class Restcaliing extends AsyncTask<String, String, String> {
JsonParser jsonParser = new JsonParser();
@Override
protected String doInBackground(String... arg0) {
try {
// (http Calling)
ServiceHandler serviceHandler = new ServiceHandler();
reststring = serviceHandler.makeServiceCall(prepaerdurl, ServiceHandler.GET);
jsonParser.parse(restString);
Log.d("Response String", "" + jsonParser.parse(restString));
} catch (Exception e) {
e.printStackTrace();
Log.d("catach", "Exception");
}
return null;
}
}
在doInBackground()
方法向服务器发送请求并以字符串形式接收响应但是当我在JSONObject中转换此字符串时,它返回此异常:
无法在JSONObject
中强制转换字符串
这是我在reststring
变量中得到的字符串:
"{\n \"assigmentlist\" : [ {\n \"attributes\" : {\n \"type\" : \"Assigment__c\",\n \"url\" : \"/services/data/v34.0/sobjects/Assigment__c/a0128000005CZIsAAO\"\n },\n \"Id\" : \"a0128000005CZIsAAO\",\n \"Class__c\" : \"1st\",\n \"Credit__c\" : \"1\",\n \"Division__c\" : \"A\",\n \"Subject__c\" : \"Maths\",\n \"Submission_Date__c\" : \"7/25/2015 7:08:00 AM GMT\"\n } ]\n}"
答案 0 :(得分:1)
JSON字符串可能包含不需要的字符,例如&#34; \ n&#34;或者在开始和结束时可能会有一些字符可能会在解析过程中产生错误
尝试在程序中使用commons-lang3:3.4库(BY apache)并使用&#34; StringEscapeUtils.unescapeJava(&lt;&gt;)&#34;删除字符
然后你的字符串可以用于数据提取操作
答案 1 :(得分:0)
你形成后的Json字符串:
{
"assigmentlist":[
{
"attributes":{
"type":"Assigment__c",
"url":"/services/data/v34.0/sobjects/Assigment__c/a0128000005CZIsAAO"
},
"Id":"a0128000005CZIsAAO",
"Class__c":"1st",
"Credit__c":"1",
"Division__c":"A",
"Subject__c":"Maths",
"Submission_Date__c":"7/25/2015 7:08:00 AM GMT"
}
]
}
JSONObject jsonObject=new JSONObject(restString);
JSONArray jsonarray = jsonObject.getJSONArray("assigmentlist");
JSONObject jsonObject1 = jsonarray.getJSONObject("attributes");
String type = jsonObject1.getString("type");
等......其余的......
答案 2 :(得分:0)
为什么那个字符串中有这么多\ n?我认为你应该在解析String之前处理它们。
答案 3 :(得分:0)
删除json字符串中的字符,如(\ n)或不需要的字符,在程序中使用commons-lang3:3.4库。 我用这个类来删除json字符串中不需要的字符&#34; StringEscapeUtils.unescapeJava(string)&#34;