working read property only not jsonignore jsonfilter java serialization jackson

java - read - Serie de serialización con Jackson



json ignore property spring (2)

Lo conseguí trabajando agregando un serializador personalizado:

class Foo { @JsonSerialize(using = MySerializer.class) private List<String> fooElements; } public class MySerializer extends JsonSerializer<Object> { @Override public void serialize(Object value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException { List<String> fooList = (List<String>) value; if (fooList.isEmpty()) { return; } String fooValue = fooList.get(0); String[] fooElements = fooValue.split(","); jgen.writeStartArray(); for (String fooValue : fooElements) { jgen.writeString(fooValue); } jgen.writeEndArray(); } }

Estoy serializando el siguiente modelo:

class Foo { private List<String> fooElements; }

Si fooElements contiene las cadenas ''uno'', ''dos'' y ''tres. El JSON contiene una cadena:

{ "fooElements":[ "one, two, three" ] }

¿Cómo puedo hacer que se vea así?

{ "fooElements":[ "one", "two", "three" ] }


Si usa Jackson, entonces el siguiente ejemplo simple funciona para mí.

Definir la clase Foo:

public class Foo { private List<String> fooElements = Arrays.asList("one", "two", "three"); public Foo() { } public List<String> getFooElements() { return fooElements; } }

Luego, usando una aplicación Java independiente:

import java.io.IOException; import org.codehaus.jackson.JsonGenerationException; import org.codehaus.jackson.map.JsonMappingException; import org.codehaus.jackson.map.ObjectMapper; public class JsonExample { public static void main(String[] args) throws JsonGenerationException, JsonMappingException, IOException { Foo foo = new Foo(); ObjectMapper mapper = new ObjectMapper(); System.out.println(mapper.writeValueAsString(foo)); } }

Productos:

{"fooElements": ["uno", "dos", "tres"]}