我试图从json字符串解析json数组,但它总是抛出异常data of type java.lang.String cannot be converted to JSONArray
。
如果我有任何错误,请告诉我。
谢谢。
这是我从服务器获取Json的代码:
try {
String url = String.format(<url here>, province.provinceCode2);
HttpClient httpClient = getHttpClient();
HttpGet httpGet = new HttpGet(url);
HttpResponse httpResponse = httpClient.execute(httpGet);
HttpEntity entity = httpResponse.getEntity();
final String result = EntityUtils.toString(entity);
parseAndSaveJsonData(province, result);
} catch (Exception e) {
e.printStackTrace();
}
这是解析JsonArray的代码:
String jsonString = <below json string>
JSONArray ja = new JSONArray(jsonString);
这是我的json字符串:
[
{
"LotPrizes":[
{
"Prize":"Giảitám",
"Range":"50"
},
{
"Prize":"Giảibảy",
"Range":"264"
},
{
"Prize":"Giảisáu",
"Range":"3654-5162-3097"
},
{
"Prize":"Giảinăm",
"Range":"9739"
},
{
"Prize":"Giảitư",
"Range":"97690-99274-32442-69432-04855-10132-17085"
},
{
"Prize":"Giảiba",
"Range":"73745-13007"
},
{
"Prize":"Giảinhì",
"Range":"05521"
},
{
"Prize":"Giảinhất",
"Range":"74870"
},
{
"Prize":"GiảiDB6",
"Range":"878833"
}
]
},
{
"LotPrizes":[
{
"Prize":"Giảitám",
"Range":"50"
},
{
"Prize":"Giảibảy",
"Range":"264"
},
{
"Prize":"Giảisáu",
"Range":"3654-5162-3097"
},
{
"Prize":"Giảinăm",
"Range":"9739"
},
{
"Prize":"Giảitư",
"Range":"97690-99274-32442-69432-04855-10132-17085"
},
{
"Prize":"Giảiba",
"Range":"73745-13007"
},
{
"Prize":"Giảinhì",
"Range":"05521"
},
{
"Prize":"Giảinhất",
"Range":"74870"
},
{
"Prize":"GiảiDB6",
"Range":"878833"
}
]
}
]
嗨,@ Caerulius,Harish,ρяσsρєяK,Hot Licks等等。
最终,经过2天的头痛和2个不眠之夜,我解决了这个问题。而且由于您花了宝贵的时间与我讨论,因此我认为我必须告诉您根本原因。那是我的责任
首先,我是一名高级android开发人员。因此,我至少了解JSON基本知识,知道如何从JSON字符串解析数据,并且知道许多有用的在线工具来进行验证。我确认从服务器获取的JSON字符串有效。
就像我在问题中告诉我的那样,我曾经final String result = EntityUtils.toString(entity);
从HttpEntity
对象获取JSON字符串。过去,我已经使用过很多次了,并且有效。没问题。但是,在这种情况下不是。原始的JSON字符串如下所示:
[{
"LotPrizes":[
{
"Prize":"Giảitám",
"Range":"50"
},
{
"Prize":"Giảibảy",
"Range":"264"
},
...
}]
但是我得到的是这样的:
"[{
\"LotPrizes\":[
{
\"Prize":\"Giảitám\",
\"Range\":\"50\"
},
{
\"Prize\":\"Giảibảy\",
\"Range\":\"264\"
},
...
}]"
该字符串与常量字符串类似,我们可以如下声明:
String stringVariable = "\"[{
\\\"LotPrizes\\\":[
{
\\\"Prize":\\\"Giảitám\\\",
\\\"Range\\\":\\\"50\\\"
},
{
\\\"Prize\\\":\\\"Giảibảy\\\",
\\\"Range\\\":\\\"264\\\"
},
...
}]\" ;
这是有效的字符串,但不是有效的JSON字符串。
为了解决此问题,我更改了获取JSON字符串的方式,并删除了不必要的字符,如下所示:
HttpClient httpClient = getHttpClient();
HttpGet httpGet = new HttpGet(url);
HttpResponse httpResponse = httpClient.execute(httpGet);
HttpEntity entity = httpResponse.getEntity();
InputStream is = entity.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
String json = sb.toString();
json = json.replace("\\", "");
json = json.substring(1);
json = json.substring(0, json.length() - 2);
现在,该json
变量包含我可以正确解析的JSON字符串。我认为这应该是HttpEntity库的错误。
希望这对其他人有所帮助。
问题内容: 我想从android中的字符串解析网址。示例字符串为 我想在不使用subString方法的情况下从String 解析URL 。 问题答案: 更新: 您可以使用正则表达式和正则表达式来查找文本中的所有url。 原版的: 您可以使用功能。
问题内容: 我正在尝试解析以下JSONString 这是我的代码: 有人可以帮忙,我的代码不起作用吗?我想解析标题,公司名称,类别等… 问题答案: 您需要从您的jsonstring 创建。 你有里面然后..
问题内容: 在Android应用程序中,我试图从字符串中解析日期,以发现两次之间的差异。 因此,我必须进行解析,以便获得格式,因此 但是我到了 所以我在做什么错了?如何在这里解析? 问题答案: 您需要将第二个MM(月)更改为mm(分钟):
问题内容: 我正在从服务器获取JSON字符串,并且已经通过代码获取了JSON字符串。但是我不知道如何解析它。 以下是我的JSON字符串 请提供任何指导或代码段。 问题答案: 使用JSON类进行解析,例如
显然,有些事情发生了变化,因此我无法从字符串解析i64: 错误: