fastjson 判断是否包含_java fastjson 如何判断整个字符串或其内部指定 key 是什么类型格式...

java 的 fastjson 库我们常用做 JSON 数据结构的工具库,其 API 中没有直接提供能判断当前 Json 字符串或 JSON 对象内部指定 key 是具体什么类型格式的方法(主要是区分 JSONObject 或 JSONArray 类型),需要开发者自行判断。

解决方法

在阐述解决方案之前,我们要明确的是,在 fastjson 中,JSON 是抽象类,JSONObject 和 JSONArray 都是其实现子类。

判断整个字符串的类型

判断整个字符串是 JSONObject 或 JSONArray 类型时,需要用 JSON 提供的 parse 方法,具体如下:

import com.alibaba.fastjson.JSON;

import com.alibaba.fastjson.JSONArray;

import com.alibaba.fastjson.JSONObject;

public class JSONDemo {

public static void main(String[] args) {

String text = "{\"knowledge\":\"dict\"}";

// String text = "[{\"knowledge\":\"dict\"},{\"knowledge\":\"qa\"}]";

Object object = JSON.parse(text);

if (object instanceof JSONObject) {

JSONObject jsonObject = (JSONObject) object;

System.out.println("JSONObject:" + jsonObject);

// do other things

} else if (object instanceof JSONArray) {

JSONArray jsonArray = (JSONArray) object;

System.out.println("JSONArray:" + jsonArray);

// do other things

} else {

System.out.println("either JSONObject or JSONArray, text:" + text);

// do other things

}

}

}

如上示例可以看出,如果不确定输入字符串 text 是什么格式的情况下,做如下操作:

用 JSON.parse 方法来解析内容;

通过 instanceof 运算符判断返回的对象类型。

判断 JSON 内部元素的类型

JSON 对象的元素或 key 事先不知道具体什么类型,需要通过具体实例数据解析判断时,代码如下:

import com.alibaba.fastjson.JSON;

import com.alibaba.fastjson.JSONArray;

import com.alibaba.fastjson.JSONObject;

public class JSONDemo {

public static void main(String[] args) {

String text = "{\"knowledge\":{\"name\":\"dict\"}}";

// String text = "{\"knowledge\":[{\"name\":\"dict\"}]}";

JSONObject jsonObject = JSON.parseObject(text);

Object knowledgeObj = jsonObject.get("knowledge");

if (knowledgeObj instanceof JSONObject) {

JSONObject knowledgeJSONObj = (JSONObject) knowledgeObj;

System.out.println("JSONObject:" + knowledgeJSONObj);

// do other things

} else if (knowledgeObj instanceof JSONArray) {

JSONArray knowledgeJSONArr = (JSONArray) knowledgeObj;

System.out.println("JSONArray:" + knowledgeJSONArr);

// do other things

} else {

System.out.println("either JSONObject or JSONArray, knowledgeObj:" + knowledgeObj);

// do other things

}

}

}

根据上述代码可以看出,步骤如下:

利用 JSONObject.get 方法获取指定 key 的对象;

通过 instanceof 运算符判断返回的对象类型。

如果是 JSONArray 的数据类型,第一步就改成 JSONArray.get 方法,参数由 key 变为数组的索引。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值