2017-09-17 12 views
0

は、私のPOJOです:2つのjacksonシリアライゼーションをどのように組み合わせて1つにするか?ここ

public static void writeJsonId6() throws JsonProcessingException { 
    MyPojo pojo = new MyPojo(); 
    pojo.setRootId(6); 
    pojo.setCommand("property.batch"); 
    pojo.setValue(129.00); 

    ObjectMapper mapper = new ObjectMapper(); 
    mapper.configure(SerializationFeature.WRAP_ROOT_VALUE, true); 
    String json = mapper.writer().withRootName(Integer.toString(pojo.getRootId())).writeValueAsString(pojo); 

    System.out.println(json); 
} 

JSON出力:{ "6":{ "コマンド": "property.batch"、 "値"

public static class MyPojo { 
    private int rootId; 
    private String command; 
    private Double value; 

    // I want this property to be shown at root level 
    @JsonIgnore 
    public int getRootId() { 
     return rootId; 
    } 

    public void setRootId(int rootId) { 
     this.rootId = rootId; 
    } 

    public String getCommand() { 
     return command; 
    } 

    public void setCommand(String command) { 
     this.command = command; 
    } 

    public Double getValue() { 
     return value; 
    } 

    public void setValue(Double value) { 
     this.value = value; 
    } 
} 

ここに私の最初のシリアル化の方法です: 129.0}}

ここでは私の第二のシリアル化の方法です:

public static void writeJsonId7() throws JsonProcessingException { 
    MyPojo pojo = new MyPojo(); 
    pojo.setRootId(7); 
    pojo.setCommand("property.batch"); 
    pojo.setValue(88.00); 

    ObjectMapper mapper = new ObjectMapper(); 
    mapper.configure(SerializationFeature.WRAP_ROOT_VALUE, true); 
    String json = mapper.writer().withRootName(Integer.toString(pojo.getRootId())).writeValueAsString(pojo); 

    System.out.println(json); 
} 

JSON出力:{ "7":{ "コマンド": "property.batch"、 "値":88.0}}

これは私が必要なものである:

{ "6":

ジャクソン版:ジャックソン(ジャーナリスト):「プロパティ」、「値」、「値」、「値」、 -core:2.0.0、jackson-databind:2.9.0

+0

'HashMap map = new HashMap(); map.put(pojo.getRootId()、pojo); map.put(pojo2.getRootId()、pojo2); String json = new ObjectMapper()。writer()。writeValueAsString(map); ' – varren

答えて

0

キーとして「6」と「7」をそれぞれのPOJOを値として含むMap<String, MyPojo>を作成し、そのマップをシリアル化します。

+0

ありがとう、たくさんの男! –

0

Jsonストリームを試すことができます。

JsonFactory factory = new JsonFactory(); 
     JsonGenerator generator = factory.createGenerator(new PrintWriter(System.out)); 
    generator.configure(SerializationFeature.WRAP_ROOT_VALUE, true); 
generator.writeStartObject(); 
generator.writeObject(firstPojo); 
generator.writeObject(secondPojo); 
generator.writeEndObject(); 
関連する問題