我试图通过检查一个值使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对象还是字符串?

最佳答案

您总是会获得原始值。

更改此:

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

10-06 08:45