2016-07-25 14:31:25 +02:00
|
|
|
package fast_json;
|
2016-07-24 15:47:04 +01:00
|
|
|
|
|
|
|
|
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;
|
2016-07-25 14:31:25 +02:00
|
|
|
import org.junit.Before;
|
|
|
|
|
import org.junit.Test;
|
|
|
|
|
|
|
|
|
|
import java.text.ParseException;
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
|
import java.util.Calendar;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
|
|
import static org.junit.Assert.assertEquals;
|
2016-07-24 15:47:04 +01:00
|
|
|
|
2017-05-15 18:35:14 +02:00
|
|
|
public class FastJsonUnitTest {
|
2016-07-25 14:31:25 +02:00
|
|
|
private List<Person> listOfPersons;
|
2016-07-24 15:47:04 +01:00
|
|
|
|
|
|
|
|
@Before
|
|
|
|
|
public void setUp() {
|
2016-07-25 14:31:25 +02:00
|
|
|
listOfPersons = new ArrayList<Person>();
|
|
|
|
|
Calendar calendar = Calendar.getInstance();
|
|
|
|
|
calendar.set(2016, 6, 24);
|
|
|
|
|
listOfPersons.add(new Person(15, "John", "Doe", calendar.getTime()));
|
|
|
|
|
listOfPersons.add(new Person(20, "Janette", "Doe", calendar.getTime()));
|
2016-07-24 15:47:04 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
2016-07-25 14:31:25 +02:00
|
|
|
public void whenJavaList_thanConvertToJsonCorrect() {
|
2016-07-24 15:47:04 +01:00
|
|
|
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
|
2016-07-25 14:31:25 +02:00
|
|
|
public void whenJson_thanConvertToObjectCorrect() {
|
2016-07-24 15:47:04 +01:00
|
|
|
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());
|
2016-07-25 14:31:25 +02:00
|
|
|
assertEquals(newPerson.getLastName(), listOfPersons.get(0).getLastName());
|
2016-07-24 15:47:04 +01:00
|
|
|
}
|
2016-07-25 14:31:25 +02:00
|
|
|
|
2016-07-24 15:47:04 +01:00
|
|
|
@Test
|
2016-07-25 14:31:25 +02:00
|
|
|
public void whenGenerateJson_thanGenerationCorrect() throws ParseException {
|
2016-07-24 15:47:04 +01:00
|
|
|
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
|
2016-07-25 14:31:25 +02:00
|
|
|
public void givenContextFilter_whenJavaObject_thanJsonCorrect() {
|
2016-07-24 15:47:04 +01:00
|
|
|
ContextValueFilter valueFilter = new ContextValueFilter() {
|
|
|
|
|
public Object process(BeanContext context, Object object,
|
2016-07-25 14:31:25 +02:00
|
|
|
String name, Object value) {
|
2016-07-24 15:47:04 +01:00
|
|
|
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
|
2016-07-25 14:31:25 +02:00
|
|
|
public void givenSerializeConfig_whenJavaObject_thanJsonCorrect() {
|
2016-07-24 15:47:04 +01:00
|
|
|
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\"}]");
|
2016-07-25 14:31:25 +02:00
|
|
|
// resetting custom serializer
|
|
|
|
|
SerializeConfig.getGlobalInstance().put(Person.class, null);
|
2016-07-24 15:47:04 +01:00
|
|
|
}
|
|
|
|
|
}
|