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