FastJson предоставляет простые API-интерфейсы для преобразования объектов Java в/из JSON
JSON.tojsonстрока
– Объекты Java в JSONJSON.ParseObject
– JSON для объектов JavaJSON.parsearray
– Массив JSON для списка объектов Java
В целом, FastJson действительно прост и удобен для преобразования JSON в/из объектов, однако ему не хватает прямой поддержки файла
, особенно метода JSON.parsearray
, для чтения из файла JSON требуются дополнительные усилия. Надеюсь, что будущие API-интерфейсы, такие как Синтаксический анализ объекта
и parseArray
способны напрямую поддерживать такие источники, как Файл
или URL
.
P.S Протестировано с помощью FastJson 1.2.57
com.alibaba fastjson 1.2.57
1. ПОЖО
Простое POJO для преобразования JSON.
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 Listskills; private Map salary; //getters, setters, toString, constructor }
2. Объекты Java для JSON
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 Listlist = 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 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; } }
Выход
// 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 для объектов 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\"}]"; Liststaff1 = JSON.parseArray(jsonArray, Staff.class); System.out.println(staff1); // JSON array in File to Java object // staff.json contain JSON array try (Stream 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 list = JSON.parseArray(content, Staff.class); System.out.println(list); } catch (IOException e) { e.printStackTrace(); } } }
Рекомендации
- Домашняя страница FastJson
- Руководство пользователя FastJson
- Примеры привязки данных FastJson
- Лучшая практика FastJson (китайский)
- Почему FastJson такой быстрый? (Китайский)
- API потока FastJson
Оригинал: “https://mkyong.com/java/fastjson-convert-java-objects-to-from-json/”