我尝试使用jsontokener解析json
这是我的jsontokener代码:

try {
        JSONObject jObj = (JSONObject) new JSONTokener(strJson).nextValue();
        String query = jObj.getString("query");
        JSONArray location = jObj.getJSONArray("locations");
        TextView tv = (TextView) findViewById(R.id.dummy_text);
        tv.setText(query);
    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        TextView tv = (TextView) findViewById(R.id.dummy_text);
        tv.setText("Wrong");
    }


这是我的第一个strJson:

        String strJson = "{"
             + "  \"query\": \"Pizza\", "
             + "  \"locations\": [ 94043, 90210 ] "
             + "}";


它会显示


  比萨


我尝试将strJson更改为这样:

        String strJson = "{"
             + "    \"component\":  "
                 + "{"
                    + "  \"query\": \"Pizza\", "
                    + "  \"locations\": [ 94043, 90210 ] "
                 + "}"
             + "}";


它会显示


  错误


这意味着要输入代码才能捕获。
请帮助我改进代码,以便它可以在组件中查询。

最佳答案

终于我找到了答案,我只是将代码改进如下:

try {
        JSONObject jObj = (JSONObject) new JSONTokener(strJson).nextValue();
        JSONObject obj = jObj.getJSONObject("component");
        String query = obj.getString("query");
        //JSONArray location = jObj.getJSONArray("locations");
        TextView tv = (TextView) findViewById(R.id.dummy_text);
        tv.setText(query);
    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        TextView tv = (TextView) findViewById(R.id.dummy_text);
        tv.setText("Wrong");
    }

09-25 22:22