2014-10-12 3 views
0

Мне нужно сериализовать POJO определенным образом. Я использую JAXB таким образом:Пользовательский сериализатор 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(); 
} 

Right теперь им преобразования данного объекта в формате 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" 
    }]} 
}]}}} 

Таким образом, потребуется написать специальный сериализатор. Я пытался найти какое-то решение, но без успеха

+0

* Так что будет нужно писать пользовательские сериалайзер. Я попытался найти какое-то решение, но без успеха * - Какие решения вы пробовали? Какие проблемы возникают с вашим пользовательским сериализатором? – 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 –

Смежные вопросы