JSON从字符串类型变量

问题描述:

我有这样一个String类型变量解析:JSON从字符串类型变量

String response_str="[{"Code":"AC_70","Id":1,"Lat":23.847153,"Lon":88.254636,"Name":"Rejinagar"},{"Code":"AC_51","Id":2,"Lat":25.024795,"Lon":88.118248,"Name":"Englishbazar"}] 
"; 

现在,我已经创建了一个方法,像这样:

public void parse_json_str(String json_str) 
    { 


     Log.i("String: ",json_str); 


    } 

我通过教程去here和有办法做到这一点。

private void JsonParsing() { 
    JSONObject jObject; 
    String jString = "{\"menu\": {\"id\": \"file\", \"value\": \"File\", \"popup\": { \"menuitem\": [ {\"value\": \"New\", \"onclick\": \"CreateNewDoc()\"}, {\"value\": \"Open\", \"onclick\": \"OpenDoc()\"}, {\"value\": \"Close\", \"onclick\": \"CloseDoc()\"}]}}}"; 
    try { 
    jObject = new JSONObject(jString); 

    JSONObject menuObject = jObject.getJSONObject("menu"); 
    String attributeId = menuObject.getString("id"); 
    System.out.println(attributeId); 

    String attributeValue = menuObject.getString("value"); 
    System.out.println(attributeValue); 

    JSONObject popupObject = menuObject.getJSONObject("popup"); 
    JSONArray menuitemArray = popupObject.getJSONArray("menuitem"); 

    for (int i = 0; i < 3; i++) { 
    Log.i("Value",menuitemArray.getJSONObject(i) 
     .getString("value").toString()); 
    Log.i("Onclick:", menuitemArray.getJSONObject(i).getString(
     "onclick").toString()); 
    } 
    } catch (Exception e) { 
    e.printStackTrace(); 
    } 

} 

问题是,JSON的结构不同,我想用同样的方式解析我的json。我的json不包含任何母亲节点。任何关于如何解析json的建议都会有很大的帮助。

你应该仔细看看结构。这个JSON是一个包含2个对象的数组。所以在创建JSONArray之后,您应该遍历所有可能的JSON对象。

[ 
    { 
     "Code":"AC_70", 
     "Id":1, 
     "Lat":23.847153, 
     "Lon":88.254636, 
     "Name":"Rejinagar" 
    }, 
    { 
     "Code":"AC_51", 
     "Id":2, 
     "Lat":25.024795, 
     "Lon":88.118248, 
     "Name":"Englishbazar" 
    } 
] 

代码:

private void JsonParsing() 
{ 
    JSONArray lJSONArray; 
    String jString = "your JSON here"; 
    try 
    { 
     lJSONArray = new JSONArray(jString); 

     JSONObject lJSONObject; 
     for (int i = 0; i < lJSONArray.length(); i++) 
     { 
      lJSONObject = lJSONArray.getJSONObject(i); 
      // PARSE FIELD HERE 
      String lCode = lJSONObject.getString("Code"); 
      // ETC 

     } 
    } 
    catch(Exception e) 
    { 
     e.printStackTrace(); 
    } 

} 

尝试用这种:)