FastJson Convert Java objects to / from JSON
By:Roy.LiuLast updated:2019-08-11
FastJson provides easily APIs to convert Java objects to / from JSON
- JSON.toJSONString – Java objects to JSON
- JSON.parseObject – JSON to Java objects
- JSON.parseArray – JSON array to List of Java objects
Note
You may have interest to read this How to parse JSON with Jackson
You may have interest to read this How to parse JSON with Jackson
Overall, the FastJson is really simple and easy to convert JSON to / from objects, however, it lack of direct File support, especially the JSON.parseArray method, it needs some extra efforts to read from a JSON file. Hope the future APIs like parseObject and parseArray are able to support for sources like File or URL directly.
P.S Tested with FastJson 1.2.57
pom.xml
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.57</version> </dependency>
1. POJO
A simple POJO, for JSON conversion.
Staff.java
package com.mkyong; import java.math.BigDecimal; import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Map; public class Staff { private String name; private int age; private String[] position; private List<String> skills; private Map<String, BigDecimal> salary; //getters, setters, toString, constructor
2. Java objects to JSON
FastJsonExample1.java
package com.mkyong; import com.alibaba.fastjson.JSON; import java.io.IOException; import java.math.BigDecimal; import java.nio.file.Files; import java.nio.file.Paths; import java.util.*; public class FastJsonExample1 { public static void main(String[] args) { Staff staff = createStaff(); // Java objects to JSON String json = JSON.toJSONString(staff); System.out.println(json); // Java objects to JSON, pretty-print String json2 = JSON.toJSONString(staff, true); System.out.println(json2); // Java objects to JSON, with formatted date String json3 = JSON.toJSONStringWithDateFormat(staff, "dd/MM/yyyy HH:mm:ss"); System.out.println(json3); // List of Java objects to JSON Array List<Staff> list = Arrays.asList(createStaff(), createStaff()); String json4 = JSON.toJSONStringWithDateFormat(list, "dd/MM/yyyy HH:mm:ss"); System.out.println(json4); try { // can't find fastjson api to write files, np, just use the standard java.nio Files.write Files.write(Paths.get("c:\\projects\\staff.json"), json4.getBytes()); } catch (IOException e) { e.printStackTrace(); private static Staff createStaff() { Staff staff = new Staff(); staff.setName("mkyong"); staff.setAge(38); staff.setPosition(new String[]{"Founder", "CTO", "Writer"}); Map<String, BigDecimal> salary = new HashMap() {{ put("2010", new BigDecimal(10000)); put("2012", new BigDecimal(12000)); put("2018", new BigDecimal(14000)); }}; staff.setSalary(salary); staff.setSkills(Arrays.asList("java", "python", "node", "kotlin")); staff.setJoinDate(new Date()); return staff;
Output
// json {"age":38,"joinDate":1556870430099,"name":"mkyong","position":["Founder","CTO","Writer"], "salary":{"2018":14000,"2012":12000,"2010":10000},"skills":["java","python","node","kotlin"]} // json2 "age":38, "joinDate":1556870430099, "name":"mkyong", "position":["Founder","CTO","Writer"], "salary":{ "2018":14000, "2012":12000, "2010":10000 }, "skills":[ "java", "python", "node", "kotlin" // json3 - format date {"age":38,"joinDate":"03/05/2019 16:00:30","name":"mkyong","position":["Founder","CTO","Writer"], "salary":{"2018":14000,"2012":12000,"2010":10000},"skills":["java","python","node","kotlin"]} // json4 - JSON Array "age":38, "joinDate":1556870630615, "name":"mkyong", "position":["Founder","CTO","Writer"], "salary":{ "2018":14000, "2012":12000, "2010":10000 }, "skills":[ "java", "python", "node", "kotlin" }, "age":38, "joinDate":1556870630615, "name":"mkyong", "position":["Founder","CTO","Writer"], "salary":{ "2018":14000, "2012":12000, "2010":10000 }, "skills":[ "java", "python", "node", "kotlin"
3. JSON to Java objects
FastJsonExample2.java
package com.mkyong; import com.alibaba.fastjson.JSON; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; public class FastJsonExample2 { public static void main(String[] args) { // JSON string to Java object String jsonString = "{\"name\":38,\"name\":\"mkyong\"}"; Staff staff = JSON.parseObject(jsonString, Staff.class); System.out.println(staff); // JSON array to Java object String jsonArray = "[{\"name\":38,\"name\":\"mkyong\"}, {\"name\":39,\"name\":\"mkyong2\"}]"; List<Staff> staff1 = JSON.parseArray(jsonArray, Staff.class); System.out.println(staff1); // JSON array in File to Java object // staff.json contain JSON array try (Stream<String> lines = Files.lines(Paths.get("c:\\projects\\staff.json"))) { String content = lines.collect(Collectors.joining()); // Hope parseArray() will support File or Reader in future. List<Staff> list = JSON.parseArray(content, Staff.class); System.out.println(list); } catch (IOException e) { e.printStackTrace();
From:一号门
Previous:Java How to save a String to a File
COMMENTS