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 ) ;
2017-08-24 15:30:33 +03:00
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 \" }] " ) ;
2016-07-24 15:47:04 +01:00
}
@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
2017-08-24 15:30:33 +03:00
assertEquals ( newPerson . getFirstName ( ) , listOfPersons . get ( 0 )
. getFirstName ( ) ) ;
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 ) ;
}
2017-08-24 15:30:33 +03:00
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 \" }] " ) ;
2016-07-24 15:47:04 +01:00
}
@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 ( ) {
2017-08-24 15:30:33 +03:00
public Object process ( BeanContext context , Object object , 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 ) {
2017-08-24 15:30:33 +03:00
return name . toLowerCase ( )
. replace ( " " , " _ " ) ;
2016-07-24 15:47:04 +01:00
}
} ;
2017-08-24 15:30:33 +03:00
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
2017-08-24 15:30:33 +03:00
SerializeConfig . getGlobalInstance ( )
. put ( Person . class , null ) ;
2016-07-24 15:47:04 +01:00
}
}