在Json字符串中键入check

时间:2015-06-18 18:17:07

标签: java instanceof

我写了这个方法来验证Json String的类型:

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数组?

2 个答案:

答案 0 :(得分:1)

基于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格式进行了假设,即扩展&#39;扩展&#39;包含消息的内容。

如果从Object类型转换为Class泛型并不像我编写的那样工作,我也会道歉;我根本没有使用Java的经验,所以它只是猜测我。

答案 1 :(得分:0)

因为

if(ty instanceof String)

和ty不是字符串