我有一个以json形式返回数据的Web服务。但返回的数据实际上不是json格式,因为对于某些关键值,如ids,它给出了数字的值,没有任何引号,因为当我创建一个对象时,它会引发一个异常所以我的要求很简单我如何将引号括起来没有引号的数字。
{"name":"pragnani","job":"android developer","experience":"fresher","age":22,"id":10}
这里Id和年龄不带引号,我想用引号替换它们。 不要简单地发布子字符串类型的东西,因为它不起作用,因为Web服务返回大量数据。我正在使用一个单独的类来检索来自不同Web服务的数据。所以请帮助我....
编辑: 这是数据
"[{\"PracticeID\":36,\"PracticeName\":\"Dr. John Doe\",\"DBServerName\":\"DBSERVER8\"}]"
这是检索数据的方法
@Override
protected String doInBackground(String... aurl) {
String results="";
try {
HttpClient httpClient = new DefaultHttpClient();
HttpPost post = new HttpPost(aurl[0]);
post.setHeader("content-type", "application/json");
StringEntity entity = new StringEntity(dto.toString());
post.setEntity(entity);
HttpResponse resp = httpClient.execute(post);
String respStr = EntityUtils.toString(resp.getEntity());
results=respStr.trim();
results=results.replace("]\"", "]").replace("}", "\"}").replace("\":", "\":\"").replace("}\",","},");
results=results.replace("\"[", "[");
results=results.replace("\\\"", "\"");
results=results.replace("\"\"", "\"");
String[] arr=results.split("\\{");
if(arr.length<=2)
{
results=results.substring(results.indexOf("[")+1,results.indexOf("]"));
}
else
{
results=results.replace("[", "{\"result\":[").replace("]", "]}");
}
} catch (Exception e) {
e.printStackTrace();
}
return results;
}
如何将其转换为json String ....
答案 0 :(得分:1)
JSON允许其结构中的数值(I.E.未加引号的数字)。它们可以是intergers浮点数或JavaScript可识别的任何其他数字类型。
允许的类型:对象,数组,数字,字符串,布尔值,null。
与普通JavaScript相反,所有Object键都必须引用,这是真的!除此之外,你可以随意直接使用数字。