Java 当大括号括在引号内时,如何解析json?

Java 当大括号括在引号内时,如何解析json?,java,android,json,gson,Java,Android,Json,Gson,如何解析这种json { "tId": 5439661, "name": "aASD", "inputParameters": { "a": "50", "b": "234324", "c": "wefefew", "d": "T", "e": "4224", "f": "T", "g": "t" }, "outputParameters": { "dId": "{1234435-A333F-A3334-A273-123243252355}"

如何解析这种json

 {
  "tId": 5439661,
  "name": "aASD",
  "inputParameters": {
  "a": "50",
  "b": "234324",
  "c": "wefefew",
  "d": "T",
  "e": "4224",
  "f": "T",
  "g": "t"
  },
  "outputParameters": {
  "dId": "{1234435-A333F-A3334-A273-123243252355}",
  "fd": "1000023456"
  }
 }
解析代码:

JSONObject jsonObject = null;
try {
    jsonObject = new JSONObject(response.body().toString());
} catch (JSONException e) {
    e.printStackTrace();
}
我尝试了上面的方法,但出现了以下错误:

org.json.JSONException: Expected ':' after 1234435-A333F-A3334-A273-123243252355
我尝试了POJO和gson库,但仍然没有成功

有人解决过这种问题吗? 我怎样才能得到字符串

已编辑:已发布测试服务器的响应使用此模型:- 在使用Gson之前,请先使用Gson库

dependencies {
               implementation 'com.google.code.gson:gson:2.8.2' // Old 2.8.0
             }
只要写 String text=response.getStringdId

然后文本将是:{1234-123423-53235423},你可以用这个文本做任何事情

我用这个代码示例解决了您的问题,我的代码工作得很好

public void getjson() {

    RequestQueue mQueue;

    mQueue = Volley.newRequestQueue(MainActivity.this);

    String url = "http://www.mocky.io/v2/5b28ca862f00006300f55e6e";

    JsonObjectRequest request = new JsonObjectRequest(com.android.volley.Request.Method.GET, url, null, new com.android.volley.Response.Listener<JSONObject>() {
        @Override
        public void onResponse(JSONObject response) {
            try {
                Log.d("Response", response.toString());

                if(response.length()>0){
                    String id=response.getString("tId");
                    String name=response.getString("name");

                    Log.d("response.getid",id);
                    Log.d("response.getname",name);

                    JSONObject inputObject=response.getJSONObject("inputParameters");
                    if(inputObject.length()>0){
                        String a=inputObject.getString("a");
                        String b=inputObject.getString("b");
                        String c=inputObject.getString("c");
                        String d=inputObject.getString("d");
                        String e=inputObject.getString("e");
                        String f=inputObject.getString("f");
                        String g=inputObject.getString("g");
                    }

                    JSONObject outObject=response.getJSONObject("outputParameters");
                    if(outObject.length()>0){
                        String didText=outObject.getString("dId");
                        String fdText=outObject.getString("fd");

                        Log.d("response.getstring",didText);
                        Log.d("response.getstring",fdText);

                    }


                }

            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    }, new com.android.volley.Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Log.d("Error", "Error de response");
            error.printStackTrace();
        }
    });

    mQueue.add(request);
}

为什么Json的值是大括号?@Pankaj我从后端api获得它。大括号是我无法解决的问题:如果response.body.toString是{dId:{1234-123423-53235423}},那么它将解析为JSON。如果response.body.toString只是{1234-123423-53235423},那么它不是有效的JSON,显然无法进行解析。必须指定变量类型。例如.body的响应和返回值。我正在使用gson:2.8.2并使用`此模型。我确信这将很好地工作,并让我知道这是否适用于您@sj_8i还更新了模型。您也可以只更新模型,它在sj_8下运行良好
public void getjson() {

    RequestQueue mQueue;

    mQueue = Volley.newRequestQueue(MainActivity.this);

    String url = "http://www.mocky.io/v2/5b28ca862f00006300f55e6e";

    JsonObjectRequest request = new JsonObjectRequest(com.android.volley.Request.Method.GET, url, null, new com.android.volley.Response.Listener<JSONObject>() {
        @Override
        public void onResponse(JSONObject response) {
            try {
                Log.d("Response", response.toString());

                if(response.length()>0){
                    String id=response.getString("tId");
                    String name=response.getString("name");

                    Log.d("response.getid",id);
                    Log.d("response.getname",name);

                    JSONObject inputObject=response.getJSONObject("inputParameters");
                    if(inputObject.length()>0){
                        String a=inputObject.getString("a");
                        String b=inputObject.getString("b");
                        String c=inputObject.getString("c");
                        String d=inputObject.getString("d");
                        String e=inputObject.getString("e");
                        String f=inputObject.getString("f");
                        String g=inputObject.getString("g");
                    }

                    JSONObject outObject=response.getJSONObject("outputParameters");
                    if(outObject.length()>0){
                        String didText=outObject.getString("dId");
                        String fdText=outObject.getString("fd");

                        Log.d("response.getstring",didText);
                        Log.d("response.getstring",fdText);

                    }


                }

            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    }, new com.android.volley.Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Log.d("Error", "Error de response");
            error.printStackTrace();
        }
    });

    mQueue.add(request);
}