JsonMappingException(JSON格式化异常)

在现在的日常开发中,不管前端还是后端,JSON 格式的数据是用得比较多的,甚至可以说无处不在。

JsonMappingException是Jackson库中的异常,表示在将JSON数据映射到Java对象时发生了错误。

JsonMappingException通常有几种可能的原因:

1.JSON数据格式错误:

如果JSON数据格式不正确,例如缺少必需字段,数据类型不匹配等,将导致JsonMappingException。

JSON数值
JSON字符串
JSON数组
JSON对象
JSON对象数组
JSON数组对象

2.Java对象与JSON数据不匹配:

如果将JSON数据映射到Java对象时,存在字段名称或类型不匹配的情况,也会引发JsonMappingException。

Java对象与JSON数据的转化:主流的转化工具有很多,一般项目中建议只选其中一种,目前好评最多的感觉就是 Jackson 了。ObjectMapper objectMapper = new ObjectMapper();

将 JSON 字符串 转成 Java 对象

使用 readValue方法,第一个参数是 JSON 字符串,第二个参数是转化的目标类的类型 

Game game = objectMapper.readValue(jsonStr, Game.class);

将 Java 对象转成 JSON 字符串

使用 writeValueAsString 方法,接受一个 Java 对象,返回一个 JSON 字符串。

String gameJson = objectMapper.writeValueAsString(game);

 将 List<T> 转成 JSON 字符串                                                     

使用 writeValueAsString 方法

String gameListJson = objectMapper.writeValueAsString(gameList);

将 JSON 字符串 转成 List<T>

使用 readValue 方法    第一个参数是 JSON 字符串,第二个参数是转化的目标 TypeReference(类型参照)对象,这里指定其泛型为 List<Game>。

List<Game> gameListFromJson = objectMapper.readValue(gameListJson, new TypeReference<List<Game>>() {});

3.缺少必需的库依赖:

Spring Boot支持的三个JSON库(Gson、Jackson、JSON-B)中,Jackson是首选默认库。如果在使用Jackson库时缺少必需的库依赖,也可能导致JsonMappingException。1.x版本使用的是codehaus的库,2.0之后改成fasterxml,建议使用2.0以后的版本。

<!-- jackson 1.x 相关依赖 -->
<dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-core-asl</artifactId>
    <version>1.9.13</version>
</dependency>
<dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-mapper-asl</artifactId>
    <version>1.9.13</version>
</dependency>

 <!-- jackson 2.x 相关依赖 -->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.12.0</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.12.0</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
    <version>2.12.0</version>
</dependency>

解决JsonMappingException的方法包括:

1.检查JSON数据的格式是否正确,确保每个字段的值与期望的数据类型一致。

2.检查Java对象的定义与JSON数据的结构是否匹配,包括字段名称类型

3.确保程序中包含Jackson库的依赖,并升级到最新版本以解决潜在的Bug。

4.添加异常处理机制,捕获JsonMappingException并进行适当的处理或错误提示。

5.使用Jackson库提供的注解,@JsonProperty等,来指定Java对象字段与JSON数据字段的映射关系。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值