fastjson简单使用
fastjson来源于alibaba,将任意类型转化为json格式
fastjson推荐版本
1 2 3 4 5 6 | <!--添加fastjson依赖--> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version> 1.2 . 70 </version> </dependency> |
本次项目采用两个springboot项目完成,以为很多时候都是调用了第三方接口,我们需要从返回的参数中获取我们需要的数据
springboot项目创建两种形式,一种是https://start.spring.io/创建,另一种是idea创建
使用地址创建
一般情况我会先用idea创建maven工程,然后加入需要的依赖
实现将字符串转化为集合
接口所在的项目代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | <?xml version= "1.0" encoding= "UTF-8" ?> <project xmlns= "http://maven.apache.org/POM/4.0.0" xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation= "http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" > <modelVersion> 4.0 . 0 </modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version> 2.2 . 1 .RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com</groupId> <artifactId>java</artifactId> <version> 0.0 . 1 -SNAPSHOT</version> <name>fastjson-study</name> <description>Demo project for Spring Boot</description> <properties> <java.version> 1.8 </java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional> true </optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <excludes> <exclude> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </exclude> </excludes> </configuration> </plugin> </plugins> </build> </project> |
1 2 3 4 5 6 7 8 9 10 11 12 13 | package com.java; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class FastjsonStudyApplication { public static void main(String[] args) { SpringApplication.run(FastjsonStudyApplication. class , args); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | package com.java.bean; import lombok.Builder; import lombok.Data; import java.io.Serializable; @Data @Builder public class ClassRoom implements Serializable { private String name; private String hobby; private String address; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | package com.java.controller.front; import com.java.bean.ClassRoom; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import java.util.ArrayList; import java.util.List; @RestController public class JsonController { @GetMapping ( "/getList" ) public List<ClassRoom> getList(){ List<ClassRoom> classRoomList= new ArrayList<>(); classRoomList.add(ClassRoom.builder().name( "小六子" ).hobby( "羽毛球" ).address( "快乐星球" ).build()); classRoomList.add(ClassRoom.builder().name( "小黑子" ).hobby( "足球" ).address( "火星" ).build()); classRoomList.add(ClassRoom.builder().name( "小红子" ).hobby( "橄榄球" ).address( "M78星云" ).build()); return classRoomList; } } |
调用方代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | <?xml version= "1.0" encoding= "UTF-8" ?> <project xmlns= "http://maven.apache.org/POM/4.0.0" xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation= "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" > <modelVersion> 4.0 . 0 </modelVersion> <groupId>com.java</groupId> <artifactId>fastjson-study</artifactId> <version> 1.0 -SNAPSHOT</version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version> 2.2 . 1 .RELEASE</version> <relativePath/> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--添加fastjson依赖--> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version> 1.2 . 70 </version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <!--lombok依赖--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version> 1.18 . 16 </version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> </project> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | package com.java; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; /** * @author yourheart * @Description * @create 2022-07-12 22:11 */ @SpringBootApplication public class FastJsonApplication { public static void main(String[] args) { SpringApplication.run(FastJsonApplication. class ,args); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | package com.java.bean; import lombok.Builder; import lombok.Data; import java.io.Serializable; @Data public class ClassRoom{ private String name; private String hobby; private String address; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | package com.java.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.converter.StringHttpMessageConverter; import org.springframework.web.client.RestTemplate; import java.nio.charset.StandardCharsets; /** * @author yourheart * @Description * @create 2022-07-12 22:22 */ @Configuration public class RestTemplateConfig { /** * 处理中文乱码问题 * @return */ @Bean public RestTemplate utp8RestTemplate() { RestTemplate restTemplate = new RestTemplate(); restTemplate.getMessageConverters().set( 1 , new StringHttpMessageConverter(StandardCharsets.UTF_8)); return restTemplate; } } |
测试类的对应代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | package com.java; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.TypeReference; import com.java.bean.ClassRoom; import lombok.extern.slf4j.Slf4j; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.web.client.RestTemplate; import java.util.ArrayList; /** * @author yourheart * @Description * @create 2022-07-12 22:14 */ @RunWith (SpringRunner. class ) @SpringBootTest @Slf4j public class FastJsonApplicationTests { @Autowired private RestTemplate restTemplate; @Test public void test(){ String url= "http://127.0.0.1:4001/getList" ; String result = restTemplate.getForObject(url, String. class ); log.info( "result:{}" ,result); //因为result的实际格式是list,所以我们要实现字符串转化为集合 ArrayList<ClassRoom> classRoomArrayList = JSON.parseObject(result, new TypeReference<ArrayList<ClassRoom>>(){}); classRoomArrayList.forEach(a->{ log.info(a.toString()); }); } } |
测试类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | package com.java; import com.alibaba.fastjson.JSONObject; import lombok.extern.slf4j.Slf4j; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import java.util.HashMap; import java.util.Map; /** * @author yourheart * @Description * @create 2022-07-12 22:14 */ @RunWith (SpringRunner. class ) @SpringBootTest @Slf4j public class FastJsonApplicationTests { @Test public void jsonTest(){ //新建json对象 JSONObject jsonObject= new JSONObject(); //向对象中填充数据 jsonObject.put( "name1" , "qwe" ); jsonObject.put( "name2" , "asd" ); jsonObject.put( "name3" , "zxc" ); //取值 String name1 = jsonObject.getString( "name1" ); log.info( "【取值】name1:{}" ,name1); //转化为json字符串 String jsonString = jsonObject.toJSONString(); log.info( "【json转化为json字符串】jsonString:{}" ,jsonString); //map集合转化为json Map<String,Object> map= new HashMap<>(); map.put( "userName" , "admin" ); map.put( "pwd" , "123456" ); JSONObject object = new JSONObject(map); log.info( "【map集合转化为json】object:{}" ,object); //json转化为map JSONObject json = new JSONObject(); json.put( "username" , "yaomy" ); json.put( "password" , "123" ); Map<String, Object> resultMap = (Map<String, Object>)json; log.info( "【json转化为map】resultMap:{}" ,resultMap); //字符串转化为json String str = "{\"username\":\"admin\",\"password\":\"123\"}" ; JSONObject jsonObject1 = JSONObject.parseObject(str); log.info( "【字符串转化为json】jsonObject1:{}" ,jsonObject1); } } |
字符串转JsonArray
1 2 | String a= "[\"11\"]" ; JSONArray objects = JSONObject.parseArray(a); |
从数组中取数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | package com.java; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.extern.slf4j.Slf4j; import org.junit.Test; @Slf4j public class Tests { @Test public void test(){ String a= "[\"11\"]" ; JSONArray objects = JSONObject.parseArray(a); log.info( "objects:{}" ,objects); Object[] objects1 = objects.toArray(); log.info(objects1[ 0 ].toString()); } } |
map集合转化为字符串
1 2 3 | Map<String,Object> map= new HashMap<>(); map.put( "name" , "test" ); String toJSONString=JSONUtils.toJSONString(map) |
集合和字符串的转化
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | package com.java.test.fastjson; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.TypeReference; import lombok.extern.slf4j.Slf4j; import org.junit.Test; import java.util.ArrayList; import java.util.List; /** * @Description: * @Author: Yourheart * @Create: 2022/11/1 21:53 */ @Slf4j public class FastjsonDemo { @Test public void arrayTest(){ List<Animal> animalList= new ArrayList<>(); Animal animal= new Animal(); animal.setId( "12" ); animal.setName( "小白" ); animal.setAge( "2" ); Animal animal1= new Animal(); animal1.setId( "12" ); animal1.setName( "小白" ); animal1.setAge( "2" ); animalList.add(animal); animalList.add(animal1); //将集合转化为字符串 String toJSONString = JSON.toJSONString(animalList); log.info( "【将集合转化为字符串】toJSONString:{}" ,toJSONString); //字符串转化为集合 ArrayList<Animal> listAnimals = JSON.parseObject(toJSONString, new TypeReference<ArrayList<Animal>>() { }); log.info( "【字符串转化为集合】listAnimals:{}" ,listAnimals); //字符串转化为集合 List<Animal> list = JSONObject.parseArray(toJSONString, Animal. class ); log.info( "【字符串转化为集合】list:{}" ,list); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | package com.java.test.fastjson; import lombok.Data; /** * @Description: * @Author: Yourheart * @Create: 2022/11/1 22:22 */ @Data public class Animal { private String id; private String name; private String age; } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异