java 判断json对象的一部分是对象还是数组

存在一个json对象,结构可能是这样:
{"data1":"v1","target":"v2"}
也可能是这样:
{"data1":"v1","target":"[{"a1":"va1","a2":"va2"}]"}
后者target是一个json数组,请问如何在不知道数据会是哪一个的情况下,做出判断,对target是对象和数组的情况做分别处理?

阅读 11.9k
2 个回答

关键是看你用的是什么json解析包?如果用fastjson,你可以:

public static void main( String[] args ){
        String json1 = "{\"data1\":\"v1\",\"target\":[{\"a1\":\"va1\",\"a2\":\"va2\"}]} ";
        JSONObject obj = JSON.parseObject( json1 );
        Object targetObj = obj.get( "target" );
        if( targetObj instanceof JSONArray ){
            System.out.println( "JSONArray 数组" );
        }else if( targetObj instanceof JSONObject ){
            System.out.println( "JSONObject 对象" );
        }
}

上面已经有同学写了fastjson的代码,可以用来判断。但是我想说的是:我理解json数据是客户端和服务端的约定,每个字段的类型应该是基于约定的。

所以除了代码实现,不知道能否进行字段约定,避免类型的判断

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题