2013-09-04 13 views
8

mam szeregowania następujący model:Szeregowania tablicy z Jacksonem

class Foo { 

    private List<String> fooElements; 
} 

Jeśli fooElements zawiera struny „jeden”, „dwa” i „trzy. JSON zawiera jeden ciąg:

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

Jak mogę dostać to wyglądać tak:

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

Czy możesz pokazać przykład jak to zrobić? To naprawdę dziwne. –

Odpowiedz

8

Pracuję, dodając niestandardowy serializator:

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(); 
    } 
} 
7

Jeśli używasz Jacksona, to po prosty przykład pracował dla mnie.

Zdefiniuj klasę Foo:

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

    public Foo() { 
    } 

    public List<String> getFooElements() { 
     return fooElements; 
    } 
} 

następnie przy użyciu autonomicznego aplikację Java:

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)); 

    } 

} 

wyjściowa:

{ "fooElements": [ "jeden", "dwa "," trzy "]}

Powiązane problemy