我编写了此方法来验证Json字符串的类型:

public static boolean loginMessageCheck(String json){
    boolean ret = false;
    JSONObject o = new JSONObject(json);

    Object ty = o.get("type");
    Object ex = o.get("expansions");
    if(ty instanceof String){
        if(ex instanceof String[]){
            ret = true;
        }
    }
    return ret;
}


所以现在我正在测试这种方法。

public static void main(String[] args){
    String[] expansions= {"chat", "test"};
    LoginMessage_Client lm = new LoginMessage_Client("login", expansions);
    Gson gson = new Gson();
    String json = gson.toJson(lm);
    System.out.println(loginMessageCheck(json));
}


由于-if(ex instanceof String []),它总是返回false。
如何检查此数组是否为String数组?

最佳答案

基于this java document on arrays,我想您可以执行以下操作:

public static boolean loginMessageCheck(String json){
boolean ret = false;
JSONObject o = new JSONObject(json);

Class<?> ex = (o.get("expansions")).getClass();
if(ex.isArray() && (ex.getComponentType() instanceof String)){
    ret = true;
}
return ret;}


根据我对JSONObject的了解,get返回与给定键关联的值,因此我假设JSON格式为“扩展”包含消息的内容。

我也很抱歉,如果从Object类型转换为Class泛型不能按照我的编写方式进行;我完全没有使用Java的经验,所以这全都是我的猜测。

09-09 19:39
查看更多