如何解析android中的Json响应?

我在服务器的GET请求结果中获得此响应

{"LL": { "control": "dev/sys/getkey", "value": "4545453030304138303046392035343733373432363020323031332D30322D31312031383A30313A3135", "Code": "200"}} 

我只想从上面的json响应中提取“value "value"

我使用此代码来获得此响应

 findViewById(R.id.button1).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { HttpResponse response = null; try { HttpClient client = new DefaultHttpClient(); HttpGet request = new HttpGet(); request.setURI(new URI( "http://192.168.14.247/jdev/sys/getkey")); response = client.execute(request); } catch (URISyntaxException e) { e.printStackTrace(); } catch (ClientProtocolException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } String responseText = null; try { responseText = EntityUtils.toString(response.getEntity()); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); Log.i("Parse Exception", e + ""); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); Log.i("IO Exception 2", e + ""); } Log.i("responseText", responseText); Toast.makeText(MainActivity.this, responseText + "", Toast.LENGTH_SHORT).show(); } }); 

我的问题是,我如何解析这个并获得仅"value"标签的"value" 。 谢谢

你可以解析当前的json String来获取它的value

 // Convert String to json object JSONObject json = new JSONObject(responseText); // get LL json object JSONObject json_LL = json.getJSONObject("LL"); // get value from LL Json Object String str_value=json_LL.getString("value"); //<< get value here 

尝试这个

 JSONObject json = (JSONObject) JSONSerializer.toJSON(responseText); String value = json.getJSONObject("LL").getString("value"); 

尝试这个:

 JSONObject json= json1.getJSONObject("LL"); String value= json.getString("value"); 

尝试这个,

 JSONObject ResponseObject = new JSONObject(Response); String str = ResponseObject.getJSONObject("LL").getString(value); 

你可以解析你的回复并获得价值试试这个:

 try { JSONObject jsonObject = new JSONObject(response);// Convert response string in to json object. JSONObject jsonLL = jsonObject.getJSONObject("LL");// Get LL json object from jsonObject. String strValue = jsonLL.getString("value");// Get value from jsonLL Object. } catch (Exception e) { e.printStackTrace(); } 

简单高效的解决方案:使用Googlle的Gson库

  • 把它放在build.gradle文件中: implementation 'com.google.code.gson:gson:2.6.2'
  • 现在将JSON字符串转换为方便的数据结构,如HashMap,如下所示。

 Type type = new TypeToken>(){}.getType(); Map myMap = gson.fromJson(JsonString , type); 

或者您可以使用以下课程:

要将JSON字符串转换为hashmap,请使用以下命令:

 HashMap hashMap = new HashMap<>(Utility.jsonToMap(response)) ; 

使用此类:) (处理偶数列表,嵌套列表和json)

 public class Utility { public static Map jsonToMap(Object json) throws JSONException { if(json instanceof JSONObject) return _jsonToMap_((JSONObject)json) ; else if (json instanceof String) { JSONObject jsonObject = new JSONObject((String)json) ; return _jsonToMap_(jsonObject) ; } return null ; } private static Map _jsonToMap_(JSONObject json) throws JSONException { Map retMap = new HashMap(); if(json != JSONObject.NULL) { retMap = toMap(json); } return retMap; } private static Map toMap(JSONObject object) throws JSONException { Map map = new HashMap(); Iterator keysItr = object.keys(); while(keysItr.hasNext()) { String key = keysItr.next(); Object value = object.get(key); if(value instanceof JSONArray) { value = toList((JSONArray) value); } else if(value instanceof JSONObject) { value = toMap((JSONObject) value); } map.put(key, value); } return map; } public static List toList(JSONArray array) throws JSONException { List list = new ArrayList(); for(int i = 0; i < array.length(); i++) { Object value = array.get(i); if(value instanceof JSONArray) { value = toList((JSONArray) value); } else if(value instanceof JSONObject) { value = toMap((JSONObject) value); } list.add(value); } return list; } } 

晚点再谢我 :)