Проверьте, является ли JsonElement строкой или JsonObject. - PullRequest
0 голосов
/ 21 ноября 2018

Я пытаюсь сделать API обратно совместимым путем проверки значения.

Я должен определить, является ли один из параметров string или JsonObject.

Это то, что я пробовал:

if (oDevices.get(i).getAsJsonPrimitive().isJsonObject()) {
                  deviceToClean.addProperty("deviceId", oDevices.get(i).getAsJsonObject().get("name").getAsString());
              } else if(oDevices.get(i).getAsJsonPrimitive().isString()) {
                  deviceToClean.addProperty("deviceId", oDevices.get(i).getAsString());
              }

Когда я отправляюJsonObject для API, я получаю следующую ошибку:

This is not a JSON Primitive.

Как я могу проверить, является ли oDevices.get(i) объектом json или строкой?

1 Ответ

0 голосов
/ 21 ноября 2018

Вы всегда получаете значение как примитив.

Измените это:

if (oDevices.get(i).getAsJsonPrimitive().isJsonObject()) {

на

if (oDevices.get(i).isJsonObject()) {

Я бы также изменил это:

if(oDevices.get(i).getAsJsonPrimitive().isString()) {

К этому:

if(oDevices.get(i).isJsonPrimitive() && oDevices.get(i).getAsJsonPrimitive().isString()) {

// ----------------^ check if it's a json primitive before getting its value
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...