java gson-检查JsonElement是字符串还是JsonObject

时间:2018-11-21 13:09:34

标签: java gson

我试图通过检查一个值来使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 :(得分:3)

您始终会获得原始值。

更改此:

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