我试图通过检查一个值使API向后兼容。
我必须确定其中一个参数是否是 string 或者 JsonObject .
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()); }
当我向API发送JSONObject时,我得到以下错误:
This is not a JSON Primitive.
如何检查 oDevices.get(i) 是JSON对象还是字符串?
oDevices.get(i)
您总是得到原始值。
改变这一点:
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