代码之家  ›  专栏  ›  技术社区  ›  TheUnreal

JavaGSON:检查JSONEL是字符串还是JSON对象

  •  1
  • TheUnreal  · 技术社区  · 6 年前

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

    当我向API发送JSONObject时,我得到以下错误:

    This is not a JSON Primitive.
    

    如何检查 oDevices.get(i) 是JSON对象还是字符串?

    1 回复  |  直到 6 年前
        1
  •  2
  •   BackSlash    6 年前

    您总是得到原始值。

    改变这一点:

    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