java - 如何正确解析这个 JSON?

标签 java json android-studio arraylist

我有一个很大的 JSON 文件,其中包含国家/地区、州和城市。 JSON 如下所示:

{
"Countries":[
        {
        "CountryName":"India",
        "States":[
                    {
                    "StateName":"Maharashtra",
                    "Cities":[
                            "Pune",
                            "Nagpur",
                            "Mumbai"
                              ]
                     },
                     {
                     "StateName":"Kerala",
                     "Cities":[
                                "Kochi",
                                "Munnar"
                              ]
                      }
                   ]
         },
         {
          "CountryName":"Australia",
          "States":[
                    {
                    "StateName":"Aukland",
                    "Cities":[
                            "GlenField",
                            "Henderson",
                                "MilFord"
                              ]
                     },
                     {
                     "StateName":"Melbourne",
                     "Cities":[
                                "Melbourne",
                                "South Oakleigh"
                              ]
                      }
                   ]
          }
       ]
  }

我的应用程序中有一个 Activity ,要求用户选择一个国家/地区,选择一个国家/地区后,我希望以数组列表的形式获取该国家/地区的所有州。当选择一个特定的州时,我想以数组列表的形式获取该州的所有城市。

我可以使用此方法获取所有国家/地区的列表:

public void loadCountries(String parent, String child, ArrayList<String> listValue)
{
    try {
        JSONObject obj = new JSONObject(loadJSONFromAsset());
        JSONArray m_jArry = obj.getJSONArray(parent);;
        ArrayList<HashMap<String, String>> formList = new ArrayList<HashMap<String, String>>();
        HashMap<String, String> m_li;

      //  listValue = new ArrayList<>();


        for (int i = 0; i < m_jArry.length(); i++) {
            JSONObject jo_inside = m_jArry.getJSONObject(i);
            Log.d("Details-->", jo_inside.getString(child));
            listValue.add(jo_inside.getString(child));
        }


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

public String loadJSONFromAsset() {
    String json = null;
    try {
        InputStream is = getAssets().open("Contries.json");
        int size = is.available();
        byte[] buffer = new byte[size];
        is.read(buffer);
        is.close();
        json = new String(buffer, "UTF-8");
    } catch (IOException ex) {
        ex.printStackTrace();
        return null;
    }
    return json;
}

然后,在 onCreate 方法中,使用这一行为我提供数组列表中的所有国家/地区

loadCountries("Countries", "CountryName", countries);

由于这是我第一次在 AndroidStudio/Java 中使用 JSON 文件,所以我不知道如何获取州和城市。非常感谢任何帮助。

最佳答案

您可以使用 GSON 库。只需创建相应的 java 对象,它将反射(reflect) json 结构,如下所示:

MyClass data = new Gson().fromJson(json, MyClass.class);

关于java - 如何正确解析这个 JSON?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50076283/

相关文章:

java - 使用 Gson 从类对象创建 org.json.JSONObject

java - SSL 握手异常 : PKIX path building failed with Unable to find certificate chain

javascript - 通过匹配其属性值来选择数组

Android 仪器测试和库项目

java - 我无法在项目内部目录中创建文件夹

android - 如何在 Android Studio 中按名称搜索文件

java - 如何更新 JdbcRowSet 对象?

java - Camera.FaceDetectionListener 不工作

java - Java Spring API 中的 PATCH 请求

json - 为什么在 JWT 中使用 Base64?