簡體   English   中英

將 JSON 數組解析為 Object(嵌套 JSON)

[英]Parsing a JSON array into Object (Nested JSON)

我有一個這樣的 JSON 文件 -

{
  "users": [
    {
      "displayName": "Amanda Polly",
      "givenName": "Amanda",
      "surname": "Polly",
      "extension_user_type": "user",
      "identities": [
        {
          "signInType": "emailAddress",
          "issuerAssignedId": "amandapolly@gmail.com"
        }
      ],
      "extension_timezone": "PST",
      "extension_locale": "en-US",
      "extension_tenant": "EG1234"
    },
    {
      "displayName": "Lowa Doe",
      "givenName": "Lowa",
      "surname": "Doe",
      "extension_user_type": "user",
      "identities": [
        {
          "signInType": "userName",
          "issuerAssignedId": "lowadow123"
        }
      ],
      "extension_timezone": "PST",
      "extension_locale": "en-US",
      "extension_tenant": "EG1234"
    }
   ]
}

如果您可以看到有 2 個用戶(Amanda 和 Lowa)包裹在“users”數組中。 我解析了文件並將所有這些轉換為一個字符串。

現在我正在嘗試遍歷所有字段,如 displayName、givenName、surname 等! 但是,如果您看到身份再次是“signInType”和“issuerAssignedId”的包裝器。

我編寫了一個遍歷所有用戶的代碼,但我無法獲得“identites”字段。 下面是我的代碼:

這里 JSONObject 的參數是 jsonAsString(這是我的具有上述 JSON 的字符串),現在我創建了一個 JSONArray 並傳遞包裝器“用戶”。

下面的代碼工作正常,但有人可以幫助迭代每個用戶的“identites”字段。

JSONObject jsonObject = new JSONObject(jsonAsString);
org.json.JSONArray jsonArray = jsonObject.getJSONArray("users");

System.out.println(jsonArray.length());

for(int i = 0; i< jsonArray.length();i++)
{
        displayName = jsonArray.getJSONObject(i).getString("displayName");
        givenName = jsonArray.getJSONObject(i).getString("givenName");
        surname = jsonArray.getJSONObject(i).getString("surname");
        extension_user_type = jsonArray.getJSONObject(i).getString("extension_user_type");
        
        
        try
        {
            extension_timezone = jsonArray.getJSONObject(i).getString("extension_timezone");
            extension_locale = jsonArray.getJSONObject(i).getString("extension_locale");
            extension_tenant = jsonArray.getJSONObject(i).getString("extension_tenant");
        }
        catch(JSONException e)
        {
            System.out.println("\nSome attribute was not found!");
        }
        
        System.out.println("\ndisplayName : "+displayName);
        System.out.println("\ngivenName : "+givenName);
        System.out.println("\nsurname : "+surname);
        System.out.println("\nextension_user_type : "+extension_user_type);
        System.out.println("\nextension_timezone : "+extension_timezone);
        System.out.println("\nextension_locale : "+extension_locale);
        System.out.println("\nextension_tenant : "+extension_tenant);

使用以下代碼:

JSONObject jsonObject = new JSONObject(jsonAsString); org.json.JSONArray jsonArray = jsonObject.getJSONArray("users");

System.out.println(jsonArray.length());

for(int i = 0; i< jsonArray.length();i++)
{
        displayName = jsonArray.getJSONObject(i).getString("displayName");
        givenName = jsonArray.getJSONObject(i).getString("givenName");
        surname = jsonArray.getJSONObject(i).getString("surname");
        extension_user_type = jsonArray.getJSONObject(i).getString("extension_user_type");

        org.json.JSONArray jsonIdentitiesArray = jsonArray.getJSONObject(i).getJSONArray("identities");
        for(int j = 0; j< jsonIdentitiesArray.length();j++)
        {
            String signInType=jsonIdentitiesArray.getJSONObject(j).getString("signInType");
             System.out.println("signInType : "+signInType);
            String issuerAssignedId=jsonIdentitiesArray.getJSONObject(j).getString("issuerAssignedId");
             System.out.println("issuerAssignedId : "+issuerAssignedId);
        }
        
        try
        {
            extension_timezone = jsonArray.getJSONObject(i).getString("extension_timezone");
            extension_locale = jsonArray.getJSONObject(i).getString("extension_locale");
            extension_tenant = jsonArray.getJSONObject(i).getString("extension_tenant");
        }
        catch(JSONException e)
        {
            System.out.println("\nSome attribute was not found!");
        }
        
        System.out.println("\ndisplayName : "+displayName);
        System.out.println("\ngivenName : "+givenName);
        System.out.println("\nsurname : "+surname);
        System.out.println("\nextension_user_type : "+extension_user_type);
        System.out.println("\nextension_timezone : "+extension_timezone);
        System.out.println("\nextension_locale : "+extension_locale);
        System.out.println("\nextension_tenant : "+extension_tenant);

我認為您可以通過對用戶 json arr 執行相同的過程來實現這一點,對於每個用戶使用 get 函數來獲取身份 json 數組並為每個用戶迭代它。

JSONObject currentUserJsonObj = (JSONObject)jsonArray.getJSONObject(i);

JSONArray idnts=(jsonArray)(currentUserJsonObj.get("identities"));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM