私は jax-rs を使用し、JAXRSOutInterceptor によって Jetty でマーシャリングされるエンティティを追加していますが、JSON 出力は次のような追加の空のプロパティで変更されています: "$": ""
JSONProvider は次のように作成および構成されます。
JSONProvider jsonProvider = new JSONProvider();
jsonProvider.setConvertTypesToStrings(true);
jsonProvider.setIgnoreNamespaces(true);
jsonProvider.setIgnoreMixedContent(true);
jsonProvider.setUnmarshallAsJaxbElement(true);
providers.add(jsonProvider);
また、名前空間を使用する XML にマーシャリングされていますが、JSON の出力と入力には使用したくありません。
マーシャリングされているオブジェクトは次のようになります。
@XmlRootElement(name="myObject1")
@XmlAccessorType(XmlAccessType.FIELD)
@SuppressWarnings("serial")
public class MyObject1 implements Serializable {
MyObject2 a;
MyObject2 b;
MyObject2 c;
// includes getters, setters, hashCode, equals, toString,
}
MyObject2 が次の場合:
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
@SuppressWarnings("serial")
public class MyObject2 implements Serializable {
String x;
String y;
List<String> z;
// includes getters, setters, hashCode, equals, toString,
}
残りの出力は次のとおりです。
{
"myObject1": {
"a": {
"x": "value1",
"y": "value2",
"z": "value3",
"$": ""
},
"$": ""
}
}
末尾の「$」を取り除くにはどうすればよいですか: "" Jettison (これは私が使用しているデフォルトの JSONProvider 実装です) は、デフォルトで @XmlValue でマップされたプロパティを「$」として表しますが、プロパティはありません。 ?
それは Serializable を実装することによって引き起こされますか?