1

私は次のような文字列型変数を持っています:

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);


    }

ここでチュートリアルを実行し、それを実行する方法を取得しました。

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を解析する方法に関する提案は、非常に役立ちます。

4

1 に答える 1

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();
    }

}

これで試してみてください:)

于 2013-02-15T14:22:46.103 に答える