Json数据处理-FastJson2的使用

这篇文章介绍了如何使用FASTJSON2进行JSON的解析和序列化,包括将JSON转换为JSONObject、JSONArray、Java对象,以及Java对象转回JSON,还涉及了JSONPath的使用和对象拷贝功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

FASTJSON 2是一个性能极致并且简单易用的Java JSON库。

1、FastJson的简单使用

1.1、将JSON解析为JSONObject

String text = "{\"name\":\"Tom\",\"age\":18}";
JSONObject data = JSON.parseObject(text);

1.2、将JSON解析为JSONArray

String text2 = "[{\"name\":\"Tom\",\"age\":18}]";
JSONArray data2 = JSON.parseArray(text2);

1.3、将JSON解析为Java对象

String text3 = "{\"name\":\"Tom\",\"age\":18}";
User data3 = JSON.parseObject(text3, User.class);

1.4、将Java对象序列化为JSON

可以是HashMap,ArrayList,实体类。

序列化:把对象转化为可传输的字节序列过程称为序列化。

反序列化:把字节序列还原为对象的过程称为反序列化。

User user = new User();
user.setName("zhangsan");
user.setAge(18);
user.setSex("男");

String text4 = JSON.toJSONString(user);

1.5、使用JSONObject、JSONArray获取属性

String text = "{\"name\":\"Tom\",\"age\":18}";
JSONObject data = JSON.parseObject(text);
String name = data.getString("name");
Integer age = data.getInteger("age");
String text = "[2, \"fastjson2\",{\"name\":\"Tom\",\"age\":18}]";
JSONArray array = JSON.parseArray(text);

int id = array.getIntValue(0);
String name = array.getString(1);
JSONObject jsonObject = array.getJSONObject(2);

System.out.println(id);//2
System.out.println(name);//fastjson2
System.out.println(jsonObject.getInteger("age"));//18

1.6、遍历JSONArray数据

String dataJson = "{\"msg\":\"成功导入2条;失败1条;\",\"code\":0,\"data\":[" +
                "{\"msg\":\"success\",\"code\":0}," +
                "{\"msg\":\"success\",\"code\":0}," +
                "{\"msg\":\"xxx不存在\",\"code\":0}],\"type\":\"INFO\"}";
JSONArray data = JSON.parseObject(dataJson).getJSONArray("data");

for (int i = 0; i < data.size(); i++) {
    JSONObject jsonObject = data.getJSONObject(i);
    Integer codeInt = jsonObject.getInteger("code");
    String msg = jsonObject.getString("msg");
    System.out.println(codeInt);
    System.out.println(msg);
}

1.7、使用JSONPath读取数据

JsonPath是一种简单的方法来提取给定JSON文档的部分内容。相当于在JavaScript对象中获取属性值

String text = "{\"name\":\"Tom\",\"age\":18}";
JSONObject data = JSON.parseObject(text);
System.out.println(JSONPath.eval(data, "$.age"));//18

JSONPath path = JSONPath.of("$.name"); // 缓存起来重复使用能提升性能
JSONReader parser = JSONReader.of(text);
String result = (String) path.extract(parser);
System.out.println(result);//Tom

更多请参考JSONPath-简单入门_myself8202的博客-CSDN博客

1.8拷贝JSON对象

应用于数据高度一致,只需修改差异数据

JSONObject jsonObject = new JSONObject();
jsonObject.put("name","张三");

JSONObject jsonObject2 = jsonObject.clone();
jsonObject2.put("age",18);

System.out.println(jsonObject);//{"name":"张三"}
System.out.println(jsonObject2);//{"name":"张三","age":18}

 1.9获取Json中非固定属性的值和键

String jsonString = "{\"name\": \"张三\",\"age\": \"15\"}";

JSONObject json = JSON.parseObject(jsonString);
for (Object key : json.keySet()) {
    String value = json.getString((String) key);
    System.out.println("Key: " + key + ", Value: " + value);
}

Map<String, Object> fieldsMap = JSON.parseObject(jsonString, Map.class);
for (Map.Entry<String, Object> entry : fieldsMap.entrySet()) {
String key = entry.getKey();
    // 如果value是数字可以直接作为String处理
    String value = entry.getValue().toString();
    System.out.println("Key: " + key + ", Value: " + value);
}

 

2、JavaScript对Json的处理

2.1、JSON 字符串转换为JavaScript 对象

JSON.parse();

2.2、JavaScript 值转换为 JSON 字符串

JSON.stringify();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值