繁体   English   中英

当值包含双引号时,Java Jackson ObjectMapper失败吗?

[英]Java jackson ObjectMapper fails when value contains double quotes?

我有java字符串(包含json对象)

{"Attribute_1":""test"","Attribute_2":"100"}

当我隐瞒Java对象MyCustomClass时,由于在test周围用双引号引起了运行时错误。 我不确定如何在json属性值中转义双引号

ObjectMapper mapper = new ObjectMapper();
return mapper.readValue(requestData, MyCustomClass.class);

错误是

com.fasterxml.jackson.core.JsonParseException: Unexpected character ('t' (code 116)): was expecting comma to separate OBJECT entries
 at [Source: {"Attribute_1":""test"","Attribute_2":"100"} line: 1, column: 12]
    at com.fasterxml.jackson.core.JsonParser._constructError(JsonParser.java:1419)
    at com.fasterxml.jackson.core.base.ParserMinimalBase._reportError(ParserMinimalBase.java:508)
    at com.fasterxml.jackson.core.base.ParserMinimalBase._reportUnexpectedChar(ParserMinimalBase.java:437)
    at com.fasterxml.jackson.core.json.ReaderBasedJsonParser._skipComma(ReaderBasedJsonParser.java:1795)

这不是“ 如何在JSON中转义双引号”的重复,因为这是显示问题

您不正确地转义。 正确的方法是您必须相应地提供json,以便编译器可以将json值转义为“”。 将JSON字符串写为:

String json = "{\"c\" : \"Hello \"Test\" there is a problem\"}";

样本测试代码:

public static void main(String[] args) throws Exception {
    TypeReference<HashMap<String, String>> tr = new TypeReference<HashMap<String, String>>() {
    };
    String json = "{\"c\" : \"Hello \"Test\" there is a problem\"}";
    System.out.println(new ObjectMapper().readValue(json, tr));
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM