maven项目
pom.xml
<dependencies> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>2.0.26</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.2</version> <scope>test</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>RELEASE</version> <scope>compile</scope> </dependency> </dependencies>
实体类测试
@Data @NoArgsConstructor @AllArgsConstructor @Accessors(chain = true) public class Student { private Integer id; private String name; private Integer age; }
先了解下JSONObject 继承JSON 实现Map<String,Object> 那么JSONObject既是JSON也是个Map
JSONArray继承JSON 实现List<Object> 那么JSONArray既是JSON也是List
JSONObject一般称为JSON对象 JSONArray称为JSON数组
而我们经常需要将
自定义对象 JSON对象(JSONObject)或数组(JSONArray) String(一般叫JSON字符串)
这三者之间经常需要做转换
在前后端交互中无论返回的是JSON字符串 还是JSON对象(JSONObject)或者JSON数组(JSONArray)看起来都是一样的
就是次序好像乱了
数组好像都正常
在实体类上加@JSONType(order={"xxx","xxx","xxx"})进行排序
所以这点,在一些特殊场合需要注意
某种时候也可以这么干
Map<String, Object> resultMap = new LinkedHashMap<>(); resultMap.put("id", s.getId()); resultMap.put("name", s.getName()); resultMap.put("age", s.getAge());
上面例子就是说其实返回JSON 或者JSON字符串(String类型) 关系不大,以及排序问题
JSONObject和JSONObject都是JSON的子类 相对来说 子类的方法更多一些
所以
在对对象与JSON对象和String三者转换时候常常会选用JSONObject
在对数组与JSON数组和String三者转换时候常选用JSONArray
对象 转JSON 或者String
JSON字符串 转对象
演示下稍微复杂些的