@Test public void testWithMapUsingFactory() { JsonParserFactory jsonParserFactory = new JsonParserFactory() .useFieldsFirst() .lax() //allow loose parsing of JSON like JSON Smart .setCharset( StandardCharsets.UTF_8 ) //Set the standard charset, defaults to UTF_8 .setLazyChop( true ) //similar to chop but only does it after map.get ; JsonSerializerFactory jsonSerializerFactory = new JsonSerializerFactory() .useFieldsFirst() //one of these //.addPropertySerializer( ) customize property output //.addTypeSerializer( ) customize type output .useJsonFormatForDates() //use json dates //.addFilter( ) add a property filter to exclude properties .includeEmpty().includeNulls().includeDefaultValues() //override defaults .handleComplexBackReference() //uses identity map to track complex back reference and avoid them .setHandleSimpleBackReference( true ) //looks for simple back reference for parent .setCacheInstances( true ) //turns on caching for immutable objects ; final ObjectMapper objectMapper = JsonFactory.create(jsonParserFactory, jsonSerializerFactory); MyClass myClass = new MyClass(); final String json = objectMapper.toJson(myClass); puts(json); final MyClass myClass1 = objectMapper.readValue(json, MyClass.class); assertEquals("foo", myClass1.string); assertEquals(1, myClass1.integer); assertNull(myClass1.map); }
.setCacheInstances( true ) //turns on caching for immutable objects
@Test public void testBug() { Employee rick = new Employee(); JsonSerializer serializer = new JsonSerializerFactory() .setIncludeEmpty( true ).setUseAnnotations( false ) .setCacheInstances( false ) .setIncludeNulls( true ) .create(); String sRick = serializer.serialize( rick ).toString(); //uts( sRick ); AllTypes foo = new AllTypes(); foo.ignoreMe = "THIS WILL NOT PASS"; foo.ignoreMe2 = "THIS WILL NOT PASS EITHER"; foo.ignoreMe3 = "THIS WILL NOT PASS TOO"; foo.setDate( new Date() ); foo.setBar( FooEnum.BAR ); foo.setFoo( FooEnum.FOO ); foo.setString( "Hi Mom" ); AllTypes foo2 = BeanUtils.copy( foo ); foo.setAllType( foo2 ); foo2.setString( "Hi Dad" ); foo.setAllTypeList( Lists.list( BeanUtils.copy( foo2 ), BeanUtils.copy( foo2 ) ) ); String sFoo = serializer.serialize( foo ).toString(); //uts( sFoo ); }
@Test public void bug2() { Employee rick = new Employee(); JsonSerializer serializer = new JsonSerializerFactory() .setIncludeEmpty( true ).setUseAnnotations( false ) .setCacheInstances( false ) .create(); String sRick = serializer.serialize( rick ).toString(); outputs( sRick ); AllTypes foo = new AllTypes(); foo.ignoreMe = "THIS WILL NOT PASS"; foo.ignoreMe2 = "THIS WILL NOT PASS EITHER"; foo.ignoreMe3 = "THIS WILL NOT PASS TOO"; foo.setDate( new Date() ); foo.setBar( FooEnum.BAR ); foo.setFoo( FooEnum.FOO ); foo.setString( "Hi Mom" ); AllTypes foo2 = BeanUtils.copy( foo ); foo.setAllType( foo2 ); foo2.setString( "Hi Dad" ); foo.setAllTypeList( Lists.list( BeanUtils.copy( foo2 ), BeanUtils.copy( foo2 ) ) ); String sFoo = serializer.serialize( foo ).toString(); outputs( sFoo ); }