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

标签 java json jackson

我有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)

这不是 How to escape double quotes in 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));
}

关于当值包含双引号时,Java jackson ObjectMapper 失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46525369/

相关文章:

java - JSONObject 等实例化崩溃

PHP - 使用 json 将数据表单发布到 Google 文档

java - 将 POJO 序列化为 json,并将某些值作为字符串或列表

java - 是否可以使用 Apache Camel 将 MyObject 传递给 bean 路由?

java - 如何在Eclipse中使用SVN进行推送

javascript - 在 Select 中与 Angular ng-options 作斗争

Java 可选 Null Json 字段

java - 如何使用 Log4J 从 SLF4J 获取根记录器以外的其他记录器

java - 当表在 mysql 中更新时,如何在 spring boot 中调用方法

java - 将数组转换为 Spring 的列表