我尝试使用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");
}