0

我正在尝试将以下 json 字符串转换为JSONObjectandroid。但它抛出JSONException。在过去的几个小时里,我一直在挖掘我的想法。请帮忙。

JSON字符串:

parseExchangeRate({"query":
             {"count":1,"created":"2012-09-07T18:49:32Z","lang":"en-US","results":
                       {"row":{"rate":"55.395","name":"USD to INR"}}}});

例外:

Value <jsonobject>parseExchangeRate( of type java.lang.String cannot be converted to JSONObject

代码 :

String result = convertStreamToString(instream);
Log.d(TAG, result); //this outputs the above stated string
JSONObject json = new JSONObject(result); // this line thows exception

提前致谢。

4

1 回答 1

2

JSON 字符串是什么?你说它是,

parseExchangeRate({"query":
              {"count":1,"created":"2012-09-07T18:49:32Z","lang":"en-US","results":
                        {"row":{"rate":"55.395","name":"USD to INR"}}}});

但这看起来像一行 javascript 代码。JSON!= javascript。看起来您的 Web 服务正在传回JSONP响应。没关系,但是由于您不是 javascript 客户端,因此您需要从该响应中解析出实际的 JSON 字符串。

String result = convertStreamToString(instream);
Pattern p = Pattern.compile("^.*?\\((.*?)\\);$", Pattern.DOTALL);
Matcher m = p.matcher(result);
if (m.matches()) {
  String json = m.group(1);
  JSONObject jo = new JSONObject(json);
  ...
} else {
  // whoops
}
于 2012-09-07T19:05:58.533 回答