2014-10-12 3 views
0

POJO를 특정 방식으로 serialize해야합니다. 나는이 방법으로 JAXB를 사용하고 있습니다 :사용자 지정 serializer JAVA -> JSON (JAXB)

public void convertToJson(TaskActionData input) { 

try { 
    JAXBContext context = JAXBContext.newInstance(TaskActionData.class); 
    Marshaller marshaller = context.createMarshaller(); 
    marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); 
    marshaller.setProperty(MarshallerProperties.MEDIA_TYPE, "application/json"); 
    marshaller.setProperty(MarshallerProperties.JSON_INCLUDE_ROOT, false); 

    marshaller.marshal(input, System.out); 

} catch (JAXBException e) { 
    e.printStackTrace(); 
} 

지금이 형태로 JSON이 객체를 변환 메신저 :

{ 
"name": "value", 
"name": "value", 
"name": 
    [ true, 
    false, 
     false, 
     false, 
     false, 
     false, 
     false, 
     false, 
     false 
    ], 
"name": {"name": 
[{ 
    "name": "value", 
    "name": [{ 
     "name": "value", 
     "name": "value", 
     "name": "value" 
    }], 
    "name": [{ 
     "name": "value", 
     "name": "value", 
     "name": "value", 
     "name": "value" 
    }], 
    "name": "value", 
    "name": [], 
    "name": [{ 
     "name": "value", 
     "name": "value", 
     "name": "value" 
    }] 
}] 
}} 

그리고 각 목록은 "항목"라벨과 같은으로 포장되는 것을 필요 그 :

{ 
"name": "value", 
"name": "value", 
"name": { 
    "name": [], 
    "items": [ 
     true, 
     false, 
     false, 
     false, 
     false, 
     false, 
     false, 
     false, 
     false 
    ] 
}, 
"name": {"name": {"items": [{ 
    "name": "Tvalue", 
    "name": {"items": [{ 
     "name": "value", 
     "name": "Bvalue", 
     "name": "value" 
    }]}, 
    "name": {"items": [{ 
     "name": "Tvalue", 
     "name": "value", 
     "name": "value", 
     "name": "value" 
    }]}, 
    "name": "value", 
    "name": {"items": []}, 
    "name": {"items": [{ 
     "name": "value", 
     "name": "value", 
     "name": "value" 
    }]} 
}]}}} 

그래서 사용자 지정 serializer를 작성해야합니다. 나는 몇 가지 해결책을 찾기 위해 시도했지만 성공하지

+0

을 *하려고합니다 그래서 사용자 지정 serializer를 작성이 필요합니다. 나는 해결책을 찾으려고 노력했지만 성공하지 못했습니다 * - 어떤 해결책을 시도 했습니까? 커스텀 시리얼 화기로 어떤 문제점이 있습니까? – Justin

+0

흠 나는 또한 어떤 예도 찾지 못했습니다. 어쩌면 내가 처음부터 그것을 작성해야합니다 : ( –

+0

대체 및 정규식으로 해결할 :) –

답변

0
I created something like that: 

public String decorateJSON(String input){ 
    String output = input.replaceAll("\\[", "{\"items\":["); 
    output = output.replaceAll("]", "]}"); 
    return output; 
} 

public String undecorateJSON(String input){ 
    String output = input.replace("{\"items\":", ""); 
    output = output.replaceAll("]}", "]"); 
    return output; 
} 

는 나중에 작동하는 경우 :

+0

그래, 난이 솔루션을 사용할 수 없습니다 JAXB보다 다른 프레임 워크를 사용할 가능성이있다 –

관련 문제