ex0*_*b1t 5 java json annotations jackson
是否有注释或其他方式告诉Jackson序列化String变量的值而不带引号.序列化程序应仅序列化一个字段的值而不带引号.
我正在寻找类似于以下内容的回报:
{"name": "nameValue", "click" : function (e){console.log("message");}}
Run Code Online (Sandbox Code Playgroud)
代替
{"name": "nameValue", "click" : "function (e){console.log("message");}"}
Run Code Online (Sandbox Code Playgroud)
以上是外部java脚本库如何需要数据,因此如果没有办法,我必须在Object Mapper将其转换为JSON后手动更改字符串.
Sta*_*Man 10
正如其他人所指出的那样,双引号在JSON中不是可选的,而是强制性的.
话虽如此,您可以使用注释JsonRawValue来执行您想要的操作.
public class POJO {
public String name;
@JsonRawValue
public String click;
}
Run Code Online (Sandbox Code Playgroud)
好吧,技术上你可以做到.虽然结果不是有效的JSON,但Jackson仍然可以:
class Dto {
@JsonProperty("name")
String foo = "nameValue";
@JsonProperty("click")
JsEntry entry = new JsEntry("function (e){console.log(\"message\");}");
}
class JsEntry implements JsonSerializableWithType {
private String value;
JsEntry(String value) {
this.value = value;
}
@Override
public void serializeWithType(JsonGenerator jgen, SerializerProvider provider, TypeSerializer typeSer) throws IOException {
this.serialize(jgen, provider);
}
@Override
public void serialize(JsonGenerator jgen, SerializerProvider provider) throws IOException {
jgen.writeRawValue(value);
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我完全同意这一要求导致标准违规,应予以修订.