json从字符串类型变量解析

时间:2013-02-15 14:12:23

标签: android json parsing

我有一个这样的String类型变量:

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的任何建议都会有很大的帮助。

1 个答案:

答案 0 :(得分:2)

你应该仔细看看结构。此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();
    }

}

试试这个:)