применить условие к json объекту с массивом json java - PullRequest
1 голос
/ 23 апреля 2020

Я получаю json с сервера, подобного этому

    "applications": [
        {
          "packageName": "com.facebook.mlite",
          "defaultPermissionPolicy": "PROMPT",
          "delegatedScopes": [
            "DELEGATED_SCOPE_UNSPECIFIED",
            "CERT_INSTALL",
            "MANAGED_CONFIGURATIONS",
            "BLOCK_UNINSTALL",
            "PERMISSION_GRANT",
            "PACKAGE_ACCESS",
            "ENABLE_SYSTEM_APP"
          ],
          "permissionGrants": [
            {
              "permission": "tt",
              "policy": "PROMPT"
            }
          ],
          "disabled": false,
          "minimumVersionCode": 0
        },


 {
      "packageName": "com.facebook.mlite",
      "defaultPermissionPolicy": "PROMPT",
      "delegatedScopes": [
        "DELEGATED_SCOPE_UNSPECIFIED",
        "CERT_INSTALL",
        "MANAGED_CONFIGURATIONS",
        "BLOCK_UNINSTALL",
        "PERMISSION_GRANT",
        "PACKAGE_ACCESS",
        "ENABLE_SYSTEM_APP"
      ],
      "permissionGrants": [
        {
          "permission": "tt",
        }
      ],
     }
      ]

Теперь есть массив json "application":[], в котором есть несколько json объектов. Теперь эти объекты не совпадают. Некоторые объекты json отсутствуют, так как первый объект содержит installType, а второй - нет. Теперь я хочу добавить это в список для повторного просмотра, если отсутствует объект json. Я хочу отправить пустую строку в устройство сжатия моего класса pojo

   public Application(String defaultPermissionPolicy, List<String> delegatedScopes, List<com.ariaware.enrolldevice.PolicyPojos.PermissionGrants> permissionGrants, Boolean disabled, String installType, Integer minimumVersionCode, String packageName) {
        this.defaultPermissionPolicy = defaultPermissionPolicy;
        this.delegatedScopes = delegatedScopes;
        PermissionGrants = permissionGrants;
        this.disabled = disabled;
        this.installType = installType;
        this.minimumVersionCode = minimumVersionCode;
        this.packageName = packageName;
    }

Это конструктор моего класса. Теперь, как вычислит массив с oop по json и проверит, существует объект или нет или нет, а затем отправит пустую строку. Мне нужно проверить каждый объект

1 Ответ

1 голос
/ 23 апреля 2020

Вы можете реализовать другой конструктор, который принимает JSONObject в качестве параметра, и создать объект. Внутри конструктора используйте optString, который возвращает пустую строку, если поле не существует (также принимает другой параметр для запасного значения).

public Application(JSONObject jsonObject) {
    this.installType = jsonObject.optString("installType");

    // example of an array
    JSONArray scopes = jsonObject.optJSONArray("delegatedScopes");
    this.delegatedScopes = new ArrayList<>();
    for (int i = 0; i < scopes.length(); i++)
        this.delegatedScopes.add(scopes.optString(i));

    //other initialization...
}

Наконец, вы получаете каждый JSONObject из applications массив.

try {
    JSONArray res = data.optJSONArray("applications");
    Application[] items =  new Application[res.length()];
    for (int i = 0; i < res.length(); i++)
        items[i] = new Application(res.getJSONObject(i));
    } catch (JSONException e) {
        e.printStackTrace();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...