3

私は、JAXB サービス用の EclipseLink 2.5 MOXy を使用して、Glassfish 3のBlaise Doughans ブログからサンプル (もう見つけられません) を実行しています。

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Company {

    @XmlElementWrapper(name="employees")
    @XmlElement(name = "employee", type=Employee.class)
    private List<Employee> employees;
}

@XmlAccessorType(XmlAccessType.FIELD)
public class Employee {
    private String id;
    private String name;
}

必要な json 構造を生成するために、いくつかの注釈をクラスに追加しました。

{
  "employees": [
    {
      "id": "1",
      "name": "Jane Doe",
      "report": []
    }
  ]
}

この JSON を非整列化しようとすると、悲しいことに失敗し、空の従業員リストを持つオブジェクトが返されます。
JSONリストに別の要素を追加するか、@XmlElementWrapper作品を削除します。
しかし、キー要素に名前を付けたいemployeesので、ラッパー注釈を使用する必要がありますか?

編集:

public class MyApplication extends Application {

    @Override
    public Set<Class<?>> getClasses() {
        HashSet<Class<?>> set = new HashSet<Class<?>>(2);
        set.add(MOXyJsonProvider.class);
        set.add(Index.class);
        return set;
    }

    @Override
    public Set<Object> getSingletons() {
        MOXyJsonProvider moxyJsonProvider = new MOXyJsonProvider();

        moxyJsonProvider.setAttributePrefix("@");
        moxyJsonProvider.setFormattedOutput(true);
        moxyJsonProvider.setIncludeRoot(false);
        moxyJsonProvider.setMarshalEmptyCollections(true);
        moxyJsonProvider.setValueWrapper("$");
        moxyJsonProvider.setWrapperAsArrayName(true);

        HashSet<Object> set = new HashSet<Object>(1);
        set.add(moxyJsonProvider);
        return set;
    }

}
4

1 に答える 1