Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将字符串转换为JSON对象?_Java_Android_Json_Deserialization - Fatal编程技术网

Java 如何将字符串转换为JSON对象?

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

我使用以下代码从Url中反序列化JSON数据。 但我的错误是:java.lang.String类型的值{“InvoiceNo”:18}无法转换为JSONObject。我的Json类似于:“{\”InvoiceNo\“:18}”请任何人帮助我

    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那样做。