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某个值的修改,以及反序列化。

posted @   初见洞洞拐  阅读(82)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示