From 0a2e672be1d584e4dfab06b49590801484012e6a Mon Sep 17 00:00:00 2001 From: GuenHamza Date: Sun, 24 Jul 2016 15:47:04 +0100 Subject: [PATCH] Add fast-json module --- fast-json/pom.xml | 30 ++++++ .../java/com/baeldung/fast_json/Person.java | 70 ++++++++++++ .../com/baeldung/fast_json/FastJsonTests.java | 100 ++++++++++++++++++ 3 files changed, 200 insertions(+) create mode 100644 fast-json/pom.xml create mode 100644 fast-json/src/main/java/com/baeldung/fast_json/Person.java create mode 100644 fast-json/src/test/java/com/baeldung/fast_json/FastJsonTests.java diff --git a/fast-json/pom.xml b/fast-json/pom.xml new file mode 100644 index 0000000000..b7627e4135 --- /dev/null +++ b/fast-json/pom.xml @@ -0,0 +1,30 @@ + + 4.0.0 + + com.baeldung + fast-json + 0.0.1-SNAPSHOT + jar + + fast-json + http://maven.apache.org + + + UTF-8 + + + + + junit + junit + 4.12 + test + + + com.alibaba + fastjson + 1.2.13 + + + diff --git a/fast-json/src/main/java/com/baeldung/fast_json/Person.java b/fast-json/src/main/java/com/baeldung/fast_json/Person.java new file mode 100644 index 0000000000..51dc690355 --- /dev/null +++ b/fast-json/src/main/java/com/baeldung/fast_json/Person.java @@ -0,0 +1,70 @@ +package com.baeldung.fast_json; + +import java.util.Date; + +import com.alibaba.fastjson.annotation.JSONField; + +public class Person { + + @JSONField(name = "AGE", serialize = false, deserialize = false) + private int age; + + @JSONField(name = "LAST NAME", ordinal = 2) + private String lastName; + + @JSONField(name = "FIRST NAME", ordinal = 1) + private String firstName; + + @JSONField(name = "DATE OF BIRTH", format = "dd/MM/yyyy", ordinal = 3) + private Date dateOfBirth; + + public Person() { + + } + + public Person(int age, String lastName, String firstName, Date dateOfBirth) { + super(); + this.age = age; + this.lastName = lastName; + this.firstName = firstName; + this.dateOfBirth = dateOfBirth; + } + + public int getAge() { + return age; + } + + public void setAge(int age) { + this.age = age; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public Date getDateOfBirth() { + return dateOfBirth; + } + + public void setDateOfBirth(Date dateOfBirth) { + this.dateOfBirth = dateOfBirth; + } + + @Override + public String toString() { + return "Person [age=" + age + ", lastName=" + lastName + ", firstName=" + + firstName + ", dateOfBirth=" + dateOfBirth + "]"; + } +} diff --git a/fast-json/src/test/java/com/baeldung/fast_json/FastJsonTests.java b/fast-json/src/test/java/com/baeldung/fast_json/FastJsonTests.java new file mode 100644 index 0000000000..9e6771e98b --- /dev/null +++ b/fast-json/src/test/java/com/baeldung/fast_json/FastJsonTests.java @@ -0,0 +1,100 @@ +package com.baeldung.fast_json; + +import static org.junit.Assert.*; + +import java.text.ParseException; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import org.junit.Before; +import org.junit.Test; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.serializer.BeanContext; +import com.alibaba.fastjson.serializer.ContextValueFilter; +import com.alibaba.fastjson.serializer.NameFilter; +import com.alibaba.fastjson.serializer.SerializeConfig; + +public class FastJsonTests { + private List listOfPersons = new ArrayList(); + + @Before + public void setUp() { + listOfPersons.add(new Person(15, "John", "Doe", new Date())); + listOfPersons.add(new Person(20, "Janette", "Doe", new Date())); + } + + @Test + public void convertObjectToJsonTest() { + String personJsonFormat = JSON.toJSONString(listOfPersons); + assertEquals( + personJsonFormat, + "[{\"FIRST NAME\":\"Doe\",\"LAST NAME\":\"John\",\"DATE OF BIRTH\":" + + "\"24/07/2016\"},{\"FIRST NAME\":\"Doe\",\"LAST NAME\":\"Janette\",\"DATE OF BIRTH\":" + + "\"24/07/2016\"}]"); + } + + @Test + public void convertJsonFormatToObject() { + String personJsonFormat = JSON.toJSONString(listOfPersons.get(0)); + Person newPerson = JSON.parseObject(personJsonFormat, Person.class); + assertEquals(newPerson.getAge(), 0); // serialize is set to false for age attribute + assertEquals(newPerson.getFirstName(), listOfPersons.get(0).getFirstName()); + assertEquals(newPerson.getLastName(), listOfPersons.get(0).getLastName()); + } + + @Test + public void createJsonObjectTest() throws ParseException { + JSONArray jsonArray = new JSONArray(); + for (int i = 0; i < 2; i++) { + JSONObject jsonObject = new JSONObject(); + jsonObject.put("FIRST NAME", "John" + i); + jsonObject.put("LAST NAME", "Doe" + i); + jsonObject.put("DATE OF BIRTH", "2016/12/12 12:12:12"); + jsonArray.add(jsonObject); + } + assertEquals( + jsonArray.toString(), + "[{\"LAST NAME\":\"Doe0\",\"DATE OF BIRTH\":" + + "\"2016/12/12 12:12:12\",\"FIRST NAME\":\"John0\"},{\"LAST NAME\":\"Doe1\"," + + "\"DATE OF BIRTH\":\"2016/12/12 12:12:12\",\"FIRST NAME\":\"John1\"}]"); + } + + @Test + public void convertObjectToJsonUsingContextFilterTest() { + ContextValueFilter valueFilter = new ContextValueFilter() { + public Object process(BeanContext context, Object object, + String name, Object value) { + if (name.equals("DATE OF BIRTH")) { + return "NOT TO DISCLOSE"; + } + if (value.equals("John") || value.equals("Doe")) { + return ((String) value).toUpperCase(); + } else { + return null; + } + } + }; + JSON.toJSONString(listOfPersons, valueFilter); + } + + @Test + public void convertObjectToJsonUsingSerializeConfig() { + NameFilter formatName = new NameFilter() { + public String process(Object object, String name, Object value) { + return name.toLowerCase().replace(" ", "_"); + } + }; + SerializeConfig.getGlobalInstance().addFilter(Person.class, formatName); + String jsonOutput = JSON.toJSONStringWithDateFormat(listOfPersons, + "yyyy-MM-dd"); + assertEquals( + jsonOutput, + "[{\"first_name\":\"Doe\",\"last_name\":\"John\"," + + "\"date_of_birth\":\"2016-07-24\"},{\"first_name\":\"Doe\",\"last_name\":" + + "\"Janette\",\"date_of_birth\":\"2016-07-24\"}]"); + } +}