Java 如何将字符串转换为JSON对象?
我使用以下代码从Url中反序列化JSON数据。 但我的错误是:java.lang.String类型的值{“InvoiceNo”:18}无法转换为JSONObject。我的Json类似于:“{\”InvoiceNo\“:18}”请任何人帮助我Java 如何将字符串转换为JSON对象?,java,android,json,deserialization,Java,Android,Json,Deserialization,我使用以下代码从Url中反序列化JSON数据。 但我的错误是:java.lang.String类型的值{“InvoiceNo”:18}无法转换为JSONObject。我的Json类似于:“{\”InvoiceNo\“:18}”请任何人帮助我 private class LongOperation extends AsyncTask{ @Override protected Object doInBackground(Object[] params) { H
private class LongOperation extends AsyncTask{
@Override
protected Object doInBackground(Object[] params) {
HttpResponse response = null;
try {
HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet();
request.setURI(new URI(
"http://192.168.1.2/Json/api/test"));
response = client.execute(request);
} catch (URISyntaxException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
String responseText = null;
try {
responseText = EntityUtils.toString(response.getEntity());
} catch (IOException e) {
e.printStackTrace();
}
try {
JSONObject json = new JSONObject(responseText); // **Error on this line**
Iterator<String> keys = json.keys();
while (keys.hasNext()) {
String key = keys.next();
String value = null;
try {
value = json.getString(key);
Toast.makeText(Billing.this, value + "",
Toast.LENGTH_SHORT).show();
} catch (JSONException e) {
e.printStackTrace();
}
textInvoice.setText(value.toString());
}
} catch (JSONException e) {
e.printStackTrace();
}
Log.i("responseText", responseText);
return null;
}
}
私有类LongOperation扩展了异步任务{
@凌驾
受保护对象doInBackground(对象[]参数){
HttpResponse响应=null;
试一试{
HttpClient=new DefaultHttpClient();
HttpGet请求=新建HttpGet();
setURI(新的URI(
"http://192.168.1.2/Json/api/test"));
响应=客户端。执行(请求);
}捕获(URISyntaxException e){
e、 printStackTrace();
}捕获(客户端协议例外e){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}
字符串responseText=null;
试一试{
responseText=EntityUtils.toString(response.getEntity());
}捕获(IOE异常){
e、 printStackTrace();
}
试一试{
JSONObject json=新的JSONObject(responseText);//**此行出错**
迭代器keys=json.keys();
while(keys.hasNext()){
String key=keys.next();
字符串值=null;
试一试{
value=json.getString(键);
Toast.makeText(Billing.this,值+“”,
吐司。长度(短)。show();
}捕获(JSONException e){
e、 printStackTrace();
}
textInvoice.setText(value.toString());
}
}捕获(JSONException e){
e、 printStackTrace();
}
Log.i(“responseText”,responseText);
返回null;
}
}
您的字符串不应包含字符“\”
。如果是这样,这就是问题的原因。无效的JSON?我已经检查过这是有效的JSON,并且硬编码此JSON字符串工作正常@scarywombat在新建JSONObject(responseText)之前打印出responseText
的值代码>我的打印输出值是:responseText:“{\”InvoiceNo\“:18}”@ScaryWombatI我不明白引用的是什么。我知道我应该发表评论而不是回答。但我没有足够的声誉这么做:(很抱歉,审稿人请在deciding@WeizhouHe:如果你还没有足够的声誉,请不要将答案用于其他目的。无论如何,如果你认为自己发现了问题,那么请不要让你的答案听起来像是澄清问题。请像编辑你答案的Tunaki那样做。