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();