instanceof не работает для JSON объекта - почему? - PullRequest
0 голосов
/ 04 февраля 2020

check this link for the response Привет в приведенном ниже имени ключа кода, так как значение действовало как объект и строка. Хотите проверить с именем. Если имя совпадает с этим, то следует проверить два значения условия: объект или строка.

если значение является объектом, то если условие должно выполняться в противном случае, иначе условие должно выполняться. но оно не идет ни в один из l oop.

любой может сказать мне, где я сделал ошибку

Json Ответ:

{
  "name": "account_id",
  "value": {
      "value": "11x52927",
      "label": "Alfa HOSPITAL"
  },
  "label": "Account Name",
  "uitype": "51",
  "type": {
      "defaultValue": null
  }
},
{
  "name": "cf_905",
  "value": "Intensive Care Medicine",
  "label": "Specialization",
  "uitype": "16",
  "type": {
      "defaultValue": null
  }
},

Контакты. java:

for (SynFields synFields1: synFields) {

    String name = synFields1.getName();

    if (name.equals("account_id")) {
        Object values = synFields1.getValue();

        try {

            if (values == JSONObject.NULL) {
                // Handle NULL
            } else if (values instanceof JSONObject) {
                JSONObject jsonObject1 = null;
                try {
                    jsonObject1 = new
                    JSONObject(String.valueOf(synFields1.getValue()));
                    String value = ((JSONObject) values).getString("value");
                    String labels = ((JSONObject) values).getString("label");

                    account_names.add(labels);
                } catch (JSONException e) {
                    e.printStackTrace();
                }

            } else {
                String value_accounts = String.valueOf(synFields1.getValue());
                account_names.add(value_accounts);
            }


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

SynField. java:

public class SynFields {

    @SerializedName("name")
    @Expose
    private String name;
    @SerializedName("value")
    @Expose
    private Object value;

    public Object getValue() {
        return value;
    }

    public void setValue(Object value) {
        this.value = value;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }


    public String getLabel() {
        return label;
    }

    public void setLabel(String label) {
        this.label = label;
    }

    @SerializedName("label")
    @Expose
    private String label;

}

1 Ответ

1 голос
/ 05 февраля 2020

Вы можете конвертировать Object в JSONObject, используя Gson.

Попробуйте вот так

try {
     if (values == Null) {
         // Handle null object
         continue;
     }
     if(values instanceof String){
         String value_accounts = String.valueOf(values);
         account_names.add(value_accounts);
     }else{
         Gson gson = new Gson();
         JSONObject jsonObject = new JSONObject(gson.toJson(values)); // convert Object to JSONObject
         String value = jsonObject.getString("value");
         String labels = jsonObject.getString("label");

         account_names.add(labels);
     }

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...