- 2023-03-25 18:04:04
- 1867 热度
- 0 评论
fastjson 是一个性能很好的 Java 语言实现的 JSON 解析器和生成器,来自阿里巴巴的工程师开发。
主要特点:
快速FAST (比其它任何基于Java的解析器和生成器更快,包括jackson)
强大(支持普通JDK类包括任意Java Bean Class、Collection、Map、Date或enum)
零依赖(没有依赖其它任何类库除了JDK)
在maven中实用fastjson
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.5</version> </dependency>
项目地址
https://github.com/alibaba/fastjson
获取各个版本
http://repo1.maven.org/maven2/com/alibaba/fastjson/
Fastjson API入口类是com.alibaba.fastjson.JSON,常用的序列化操作都可以在JSON类上的静态方法直接完成。
// 把JSON文本parse为JSONObject或者JSONArray public static final Object parse(String text); // 把JSON文本parse成JSONObject public static final JSONObject parseObject(String text); // 把JSON文本parse为JavaBean public static final T parseObject(String text, Class clazz); // 把JSON文本parse成JSONArray public static final JSONArray parseArray(String text); //把JSON文本parse成JavaBean集合 public static final List parseArray(String text, Class clazz); // 将JavaBean序列化为JSON文本 public static final String toJSONString(Object object); // 将JavaBean序列化为带格式的JSON文本 public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean转换为JSONObject或者JSONArray public static final Object toJSON(Object javaObject);
例如http://www.javacui.com/Theory/417.html 里面,用JSON将一个对象输出为JSON字符串。
和List与对象之间操作
public static void json2List() { // List -> JSON array List<Bar> barList = new ArrayList<Bar>(); barList.add(new Bar("1",1,new Date())); barList.add(new Bar("2",2,new Date())); barList.add(new Bar("3",3,new Date())); String json = JSON.toJSONString(barList, true); System.out.println(json); // JSON array -> List List<Bar> barList1 = JSON.parseArray(json, Bar.class); for (Bar bar : barList1) { System.out.println(bar.toString()); } }
打印
[ { "barAge":1, "barDate":1449489485307, "barName":"1" }, { "barAge":2, "barDate":1449489485307, "barName":"2" }, { "barAge":3, "barDate":1449489485307, "barName":"3" } ] [barName:1,barAge:1,barDate:Mon Dec 07 19:58:05 CST 2015] [barName:2,barAge:2,barDate:Mon Dec 07 19:58:05 CST 2015] [barName:3,barAge:3,barDate:Mon Dec 07 19:58:05 CST 2015]
注意看,我们的对象打印时,打印出来的不是内存地址。
和Map与对象之间的操作
public static void json2Map() { // Map -> JSON Map<String, Bar> map = new HashMap<String, Bar>(); map.put("a", new Bar("1",1,new Date())); map.put("b", new Bar("2",2,new Date())); map.put("c", new Bar("3",3,new Date())); String json = JSON.toJSONString(map, true); System.out.println(json); // JSON -> Map Map<String, Bar> map1 = (Map<String, Bar>) JSON.parse(json); for (String key : map1.keySet()) { System.out.println(key + ":" + map1.get(key)); } }
打印
{ "b":{ "barAge":2, "barDate":1449489656635, "barName":"2" }, "c":{ "barAge":3, "barDate":1449489656635, "barName":"3" }, "a":{ "barAge":1, "barDate":1449489656635, "barName":"1" } } b:{"barName":"2","barAge":2,"barDate":1449489656635} c:{"barName":"3","barAge":3,"barDate":1449489656635} a:{"barName":"1","barAge":1,"barDate":1449489656635}
基于http://www.javacui.com/Theory/413.html ,其他的自行研究。
实体对象代码
import java.lang.reflect.Field; import java.util.Date; @SuppressWarnings("all") public class Bar { private String barName; private int barAge; private Date barDate; public Bar(){} public Bar(String barName,int barAge,Date barDate){ this.barName=barName; this.barAge=barAge; this.barDate=barDate; } @Override public String toString() { StringBuilder sb = new StringBuilder("["); Field[] fields = getClass().getDeclaredFields(); for (Field field : fields) { try { field.setAccessible(true); sb.append(field.getName()).append(":").append(field.get(this)).append(","); } catch (Exception e) { e.printStackTrace(); } } // 去掉多于的逗号 if(sb.length() > 1){ sb.deleteCharAt(sb.length()-1); } sb.append("]"); return sb.toString(); } }
本文结束。
0 评论
留下评论
热门标签
- Spring(403)
- Boot(208)
- Spring Boot(187)
- Java(82)
- Cloud(82)
- Spring Cloud(82)
- Security(60)
- Spring Security(54)
- Boot2(51)
- Spring Boot2(51)
- Redis(31)
- SQL(29)
- Mysql(25)
- IDE(24)
- Dalston(24)
- JDBC(22)
- IDEA(22)
- mongoDB(22)
- MVC(22)
- Web(21)
- CLI(20)
- Alibaba(19)
- SpringMVC(19)
- SpringBoot(17)
- Docker(17)
- Git(16)
- Eclipse(16)
- Vue(16)
- ORA(15)
- JPA(15)
- Apache(15)
- Mybatis(14)
- Oracle(14)
- jdk(14)
- Tomcat(14)
- Linux(14)
- HTTP(14)
- XML(13)
- JdbcTemplate(13)
- OAuth(13)
- Nacos(13)
- Pro(13)
- Data(12)
- JSON(12)
- OAuth2(12)
- stream(11)
- int(11)
- Myeclipse(11)
- not(10)
- Bug(10)
- maven(9)
- Map(9)
- Hystrix(9)
- ast(9)
- APP(8)
- Bit(8)
- API(8)
- session(8)
- Window(8)
- Swagger(8)
- Github(7)
- JavaMail(7)
- Cache(7)
- File(7)
- mail(7)
- IntelliJ(7)
- windows(7)
- too(7)
- HTML(7)
- RabbitMQ(6)
- star(6)
- and(6)
- Excel(6)
- Log4J(6)
- pushlet(6)
- apt(6)
- read(6)
- Freemarker(6)
- WebFlux(6)
- JSP(6)
- Bean(6)
- error(6)
- nginx(6)
- Server(6)
- ueditor(6)
- jar(6)
- ehcache(6)
- UDP(6)
- rdquo(5)
- PHP(5)
- Struts(5)
- string(5)
- Syntaxhighlighter(5)
- script(5)
- Tool(5)
- Controller(5)
- swagger2(5)
- ldquo(5)
- input(5)
- Servlet(5)