Как отобразить значение ключа json на элемент enum объекта java, используя конфигурацию smooks - PullRequest
0 голосов
/ 20 февраля 2019

Как сопоставить json объекту java с помощью smooks.Мне нужно сопоставить значение ключа json с enum объекта java, а также, если ключ отсутствует, какое-то значение по умолчанию из enum. Ниже приведены файл json, java pojo и файл конфигурации smooks.Заранее спасибо.

Json:

{
"orderId" : 1,
"username": "Pooja",
"priority": "HIGH",
"orderItems" : 
    {
        "quantity" : "1",
        "product id" : "364",
        "title" : "abc",
        "price" : "29.98"

    }
}

Java Pojo:

public class Simple {
private String orderId;
private String username;
private Map<String, String> orderItems = new HashMap<>();
public LineOrderPriority priority;
//getters and setters of above members
public enum LineOrderPriority {
HIGH("High"), MEDIUM("Medium"), NORMAL("Normal"), LOW("Low");
private final String value;
private LineOrderPriority(final String value) {
    this.value = value;
}
public String getValue() {
    return value;
} } }

smooks_config.xml:

<?xml version="1.0" encoding="UTF-8"?>
<smooks-resource-list
xmlns="http://www.milyn.org/xsd/smooks-1.1.xsd"
xmlns:core="http://www.milyn.org/xsd/smooks/smooks-core-1.3.xsd"
xmlns:json="http://www.milyn.org/xsd/smooks/json-1.1.xsd"
xmlns:jb="http://www.milyn.org/xsd/smooks/javabean-1.4.xsd"
xmlns:ftl="http://www.milyn.org/xsd/smooks/freemarker-1.1.xsd">
<json:reader rootName="simple">
</json:reader>
<jb:bean class="com.example.demo.Simple" beanId="simple"
    createOnElement="simple">
    <jb:value property="orderId" data="#/orderId" />
    <jb:value property="username" data="#/username" />
    <jb:value property="priority" data="#/priority"
        default="HIGH" decoder="Enum" />
    <jb:wiring property="orderItems" beanIdRef="orderItems" />
</jb:bean>
<jb:bean beanId="orderItems" class="java.util.HashMap"
    createOnElement="simple">
    <jb:value data="#/orderItems/*" />
</jb:bean>
</smooks-resource-list>
...