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

如何匹配类

  •  0
  • Faraz  · 技术社区  · 6 年前

    我正在使用 org.json.simple.JSONObject 将字符串json转换为jsonObject。

    当我从中得到一个值时,我想检查类型或类。这样地:

    JSONParser parser = new JSONParser();
    JSONObject data = (JSONObject) parser.parse(new FileReader(resourceFile.getFile()));
    JSONObject target = (JSONObject) data.get("target");
    if(data.get("target") instanceof JSONArray.class) //not working
    ...
    if(data.get("target").getClass().equals(JSONArray.class)) //not working
    if(data.get("target").getClass() == JSONArray.class) //not working
    ...
    
    
    
    if(data.get("target").getClass().equals("org.json.simple.JSONArray")) //this works.
    

    有没有其他方法来检查和比较这些课程?

    2 回复  |  直到 6 年前
        1
  •  1
  •   SomoKRoceS    6 年前
    if(data.get("target") instanceof JSONArray)
    

    也为我工作。

    再想一想,可能是因为 JSONArray 是否从其他库导入?也许吧 JSON阵列 从进口 org.json.JSONArray (org.json) ,同时 JSONObject 从导入 org.json.simple.JSONObject (org.json.simple) ?

    我从一个事实中得到了线索,那就是只有真正指定的类路径对您有效( ... .equals("org.json.simple.JSONArray") ... )

        2
  •  1
  •   Faraz    6 年前

    这对我很有用:

    data.get("target").getClass().getName().equals(JSONArray.class.getName())