我试图通过检查一个值使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