超全的FastJson应用之各种类型转换

  1. FastJson介绍

Fastjson是一个Java语言编写的高性能功能完善的JSON库。它采用一种“假定有序快速匹配”的算法,把JSON Parse的性能提升到极致,是目前Java语言中最快的JSON库。Fastjson接口简单易用,已经被广泛使用在缓存序列化、协议交互、Web输出、Android客户端等多种应用场景。

  1. 各种转换总结(附代码)

在日常开发中,会经常遇到Json和各种类型的互转,今天就总结下能想到的所有转换。无先后顺序,想到什么写什么。新建一个实体类后面展示会用到。为了偷懒用了lombok,数据也都是瞎写的,不要纠结。

@Data
@AllArgsConstructor
@NoArgsConstructor
@Component
public class Person {
    private String name;
    private Integer age;
    private Date birth;
}

2.1JavaBean转JsonObject

@SpringBootTest
public class JavaBean2JsonObjectTests {
    @Autowired
    private Person person;
    //JavaBean to JsonObject
    @Test
    void test(){
        person.setName("张三");
        person.setAge(58);
        person.setBirth(new Date(19920320L));
        JSONObject jsonObject = (JSONObject) JSONObject.toJSON(person);
        System.out.println(jsonObject.get("name") + "/" + jsonObject.get("age"));
    }
}

输出结果是:

2.2JavaBean转Json字符串

@SpringBootTest
public class JavaBean2JsonTests {
    @Autowired
    private Person person;
    //JavaBean to Json
    @Test
    void test(){
        person.setName("张三");
        person.setAge(58);
        person.setBirth(new Date(19920327L));
        String jsonStr = JSON.toJSONString(person);
        System.out.println(jsonStr);
    }

输出结果是:

2.3Json字符串转JavaBean

@SpringBootTest
public class Json2JavaBeanTests {
    @Autowired
    private Person person;
    //Json to JavaBean
    @Test
    void test(){
        person.setName("张三");
        person.setAge(58);
        person.setBirth(new Date());
        String jsonStr = JSON.toJSONString(person);
        System.out.println(jsonStr);
        Person person = JSONObject.parseObject(jsonStr, Person.class);
        System.out.println(person);
    }
}

输出结果是:

这里注意在序列化和反序列化时,Person对象会默认以Date类型的时间戳去转换。

2.4Json字符串转JsonObject

@SpringBootTest
public class Json2JsonObjectTests {
    //Json字符串转JsonObject
    @Test
    void test(){
        String jsonStr = "{\"key1\": 1,\"key2\":2,\"key3\":3}";
        JSONObject parse =  JSONObject.parseObject(jsonStr);
        System.out.println(parse.getString("key1"));
    }
}

输出结果是:1

2.5Json字符串转List

@SpringBootTest
public class Json2ListTests {
    //Json to List
    @Test
    void test(){
        String jsonStr = "[{\"key1\": 1},{\"key2\":2},{\"key3\":3}]";
        List<Map> maps = JSONArray.parseArray(jsonStr, Map.class);
        maps.forEach(System.out::println);
    }
}

输出结果是:

2.6Json字符串转Map

@SpringBootTest
public class Json2MapTests {
    @Test
    void test(){
        String jsonStr = "{\"key1\": 1,\"key2\":2,\"key3\":3}";
        Map map = JSONObject.parseObject(jsonStr, Map.class);
        map.forEach((o1, o2) -> System.out.println(o1 + "=" + o2));
    }
}

输出结果是:

2.7Json数组字符串转JsonArray

@SpringBootTest
public class JsonArrayTests {
    //JSONArray 添加Object
    @Test
    void test() {
        JSONArray jsonArray = new JSONArray();
        jsonArray.add(new Person("张三", 76, new Date()));
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("key1",1);
        jsonArray.add(jsonObject);
        String str = JSONArray.toJSONString(jsonArray);
        System.out.println(str);
    }
    //Json数组字符串转JsonArray
    @Test
    void test1(){
        String jsonArrStr = "[{\"name\" : \"张三\",\"age\" : 26},{\"name\" : \"李四\",\"age\" : 26}]";
        JSONArray jsonArray = JSONArray.parseArray(jsonArrStr);
        jsonArray.forEach(o -> System.out.println(o.toString()));
    }
}

输出结果是:

test:

test1:

这里注意JsonArray是FastJson提供的一个类,是一个对象,并不是我们创建的一般意义的数组,代码中我们也可以看到JsonArray是可以添加JsonObject 和JavaBean等各种Object的。

2.8JsonObject 转 Json字符串

@SpringBootTest
public class JsonObject2JsonTests {
    //JsonObject 转 Json字符串
    @Test
    void test() {
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("key1", new Person("张三", 11, new Date()));
        String jsonStr = JSON.toJSONString(jsonObject);
        System.out.println(jsonStr);
    }
}

输出结果是:

2.9List转JsonArray

@SpringBootTest
public class List2JsonArrayTests {
    @Autowired
    private Person person;
    //List to JsonArray
    @Test
    void test(){
        List<Person> list = new ArrayList<>();
        person.setName("张三");
        person.setAge(26);
        person.setBirth(new Date());
        list.add(person);
        person = new Person();
        person.setName("李四");
        person.setAge(31);
        person.setBirth(new Date());
        list.add(person);
        JSONArray jsonArray = (JSONArray)JSONArray.toJSON(list);
        jsonArray.forEach(o -> System.out.println(o.toString()));
    }
}

输出结果是:

2.10List 转Json 字符串

@SpringBootTest
public class List2JsonTests {
    @Autowired
    private Person person;
    //List 转Json 字符串
    @Test
    void test() {
        List<Person> list = new ArrayList<>();
        person.setName("张三");
        person.setAge(26);
        person.setBirth(new Date());
        list.add(person);
        person = new Person();
        person.setName("李四");
        person.setAge(31);
        person.setBirth(new Date());
        list.add(person);
        String listJson = JSON.toJSONString(list);
        System.out.println(listJson);
    }
}

输出结果是:

2.11Map转Json字符串

@SpringBootTest
public class Map2JsonTests {
    //Map转Json字符串
    @Test
    void test(){
         Map<String, Object> map = new HashMap<>();
         map.put("key1","1");
         map.put("key2","2");
         map.put("key3","3");
         map.put("key4","4");
         String mapJson = JSON.toJSONString(map);
        System.out.println("mapJson:" + mapJson);
    }
}

输出结果是:

  1. 总结

常用的Json转换已经罗列出来了,大家也可以自己补充一些,作为日常开发中的应用小结。手码不易,点点关注。

猜你喜欢

转载自blog.csdn.net/Lee_92/article/details/129725057