FastJson常用方法总结
依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.54</version>
</dependency>
常用API
1 public static final Object parse(String text);// 把JSON文本转换成JSONObject或JSONArray
2 public static final JSONObject parseObject(String text);// 把JSON文本转换成JSONObject
3 public static final JSONArray parseArray(String text);// 把JSON文本转换成JSONArray
4 public static final <T> T parseObject(String text, Class<T> clazz);// 把JSON文本转换成JavaBean
5 public static final <T> List<T> parseArray(String text, Class<T> clazz); //把JSON文本转换成JavaBean集合
6 public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本
7 public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本
8 public static final Object toJson(Obiect javaObject);//将JavaBean转换为JSONObject或者JSONArray
核心:JSON与JAVABEAN的对应关系
Demo
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.Data;
import java.util.List;
/**
* fastjson测试
*/
public class FastJsonTest {
public static void main(String[] args) {
String demoStr = "{\n" +
" \"id\":1,\n" +
" \"name\":\"lisi\",\n" +
" \"men\":[\n" +
" {\n" +
" \"code\":-1,\n" +
" \"describe\":\"lisidegongzuo\",\n" +
" \"empNum\":[\n" +
" \"123456\",\n" +
" \"123\",\n" +
" \"456\"\n" +
" ]\n" +
" },\n" +
" {\n" +
" \"code\":-1,\n" +
" \"describe\":\"zhangsandegongzuo\",\n" +
" \"empNum\":[\n" +
" \"456\",\n" +
" \"123\",\n" +
" \"456\"\n" +
" ]\n" +
" }\n" +
" ]\n" +
"}";
// 目标是拿到List<Men>
JSONObject jsonObject = JSON.parseObject(demoStr);//1
System.out.println("jsonObject:"+jsonObject);
List men = jsonObject.getObject("men", List.class);//2
System.out.println("men:"+men);
List<Men> men1 = JSON.parseArray(JSON.toJSONString(men), Men.class);//3
System.out.println("men1:"+men1);
// 合并之后
List<Men> men2 = JSON.parseArray(JSON.toJSONString(JSON.parseObject(demoStr).getObject("men", List.class))).toJavaList(Men.class);
System.out.println("men2:"+men2);
// 直接将json字符串转化为对应的JavaBean
Work work = JSON.parseObject(demoStr, Work.class);
List<Men> men3 = work.getMen();
System.out.println("men3:"+men3);
System.out.println("--------------------分割线--------------------------");
Work work1 = JSON.toJavaObject(JSON.parseObject(demoStr), Work.class);
List<Men> men4 = work1.getMen();
System.out.println("men4:"+men4);
// 修改men中的值,再反序列化为json字符串
for(Men m : men4) {
m.setDescribe("修改值");
m.setEmpNum(
Arrays.asList("修改后:","123")
);
}
work1.setMen(men4);
String s = JSON.toJSONString(work1);
System.out.println("修改后:"+s);
}
}
@Data
class Work{
private Integer id;
private String name;
private List<Men> men;
}
@Data
class Men {
private Integer code;
private String describe;
private List<String> empNum;
}
输出结果
总结
相比之下,对需要转化的json串,创建相对应的JavaBean可以降低转化的难度,同时也方便对json某个值的修改,以及反序列化。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术