Jerseyを使用してオブジェクトをJSONに変換するプロジェクトに取り組んでいます。Jerseyを使用してネストされたリストをJSONとしてマーシャリングするにはどうすればよいですか? nullの配列または配列を含む1要素の辞書の配列を取得します。
{"data":[["one", "two", "three"], ["a", "b", "c"]]}
私が最初に変換< LinkedListの< LinkedListの<文字列> > >などのデータを表現したいオブジェクト、と私はジャージーを考え出し:私はそうのように、ネストされたリストを書き出すことができるようにしたいのですが正しいことをするだけだろう。上記は、ヌルのリストとして出力されました:ネストされたオブジェクトをラップする必要があることを読んだ後
{"data":[null, null]}
、私は次のことを試してみました:
@XmlRootElement(name = "foo")
@XmlType(propOrder = {"data"})
public class Foo
{
private Collection<FooData> data = new LinkedList<FooData>();
@XmlElement(name = "data")
public Collection<FooData> getData()
{
return data;
}
public void addData(Collection data)
{
FooData d = new FooData();
for(Object o: data)
{
d.getData().add(o == null ? (String)o : o.toString());
}
this.data.add(d);
}
@XmlRootElement(name = "FooData")
public static class FooData
{
private Collection<String> data = new LinkedList<String>();
@XmlElement
public Collection<String> getData()
{
return data;
}
}
}
コードは何に近いある、下記何出力します私がしたい:
{"data":[{"data":["one", "two", "three"]},{"data":["a", "b", "c"]}]}
は私が最初のデータはリストのリストではなく、1要素の辞書のリストになりたいです。これをどのように達成するのですか?
は、ここに私のJAXBContentResolverです:あなたはジャージー-JSONを試してみました
@Provider
public class JAXBContextResolver implements ContextResolver<JAXBContext>
{
private JAXBContext context;
private Set<Class<?>> types;
// Only parent classes are required here. Nested classes are implicit.
protected Class<?>[] classTypes = new Class[] {Foo.class};
protected Set<String> jsonArray = new HashSet<String>(1) {
{
add("data");
}
};
public JAXBContextResolver() throws Exception
{
Map<String, Object> props = new HashMap<String, Object>();
props.put(JSONJAXBContext.JSON_NOTATION, JSONJAXBContext.JSONNotation.MAPPED);
props.put(JSONJAXBContext.JSON_ROOT_UNWRAPPING, Boolean.TRUE);
props.put(JSONJAXBContext.JSON_ARRAYS, jsonArray);
this.types = new HashSet<Class<?>>(Arrays.asList(classTypes));
this.context = new JSONJAXBContext(classTyes, props);
}
public JAXBContext getContext(Class<?> objectType)
{
return (types.contains(objectType)) ? context : null;
}
}
あなたのケースは私よりも複雑だったと思っています... – Arnaudweb