我正在使用 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 引起的吗?