Spring MVC使用fastjson数据传到前台中文乱码解决

Spring MVC的controller中返回给前台数据以json格式传输,json转换使用阿里的fastjson,但是将结果传到前台后中文乱码。

在网上找了解决方案,说什么Spring MVC和fastjson整合啥的,按说明写转换类,在Spring中添加配置,但是结果还是乱码。

最后继续找解决方案,发现在RequestMapping中添加如下配置即可解决:

produces = { "application/json;charset=UTF-8" }


### 解决Java方法参数中JSONObject无法正确接收数据的问题 当遇到Java方法参数中的`JSONObject`无法正确接收到数据的情况时,通常是因为HTTP请求的内容类型设置不正确或未适当地配置控制器以处理JSON输入。为了确保能够成功解析并接收JSON对象作为方法参数,在Spring MVC框架下有几种常见做法。 #### 使用`@RequestBody`注解配合`Content-Type` 对于POST请求或其他允许带有body体的HTTP动词来说,应该指定客户端发送的数据格式为`application/json`,即通过设置请求头中的`Content-Type`属性来表明这一点[^2]。服务器端则需利用`@RequestBody`注解告知Spring容器将请求主体内的JSON序列化后的字符串转换为目标类型的实例: ```java @PostMapping(value = "/receiveJson", consumes = "application/json", produces = "application/json") @ResponseBody public ResponseEntity<String> receiveJson(@RequestBody MyCustomObject myObj){ // 处理逻辑... } ``` 这里的关键在于使用了`consumes`属性指定了消费媒体类型,并且在方法签名处加入了`@RequestBody`以便让Spring自动完成反序列化的操作。 #### 配置消息转换器支持JSON 为了让上述机制生效,还需要确认项目已经包含了Jackson库(默认情况下Spring Boot会自带)。如果是在传统的Maven/Gradle工程里,则要显式声明依赖项;而对于某些特殊场景下的自定义需求,可能还要调整全局的消息转换策略,比如增加特定于Fastjson的支持[^1]。 #### 正确映射端字段到后端实体类成员变量 有时即使解决了基本的通信问题,仍然可能出现部分字段未能被正确填充的现象。这往往源于后端之间命名约定的不同步所引起的匹配失败。此时可以通过两种途径加以改进:一是统一双方采用驼峰命名法或是其他一致性的编码风格;二是借助`@JsonProperty`等元数据标签来进行更灵活精准的关联控制[^4]。 例如,假定从端传来的是名为`user_name`的一个键值对儿,而在服务层期望获取它对应的JavaBean属性叫作`userName`的话,就可以像这样写: ```java class User { private String userName; @JsonProperty("user_name") public void setUserName(String userName) { this.userName = userName; } ... } ``` 另外值得注意的一点是关于字符集编码的选择。特别是在涉及到多字节字如汉字的情况下,默认UTF-8应该是首选方案之一,同时也要注意检查整个调用链路各环节是否都保持了一致性,防止因局部差异而导致乱码现象的发生[^3]。 最后提醒一点,针对较为复杂的业务模型建议优先考虑直接传递POJO而非原始形式的`JSONObject`,因为者不仅有助于提高代码可读性和维护便利度,而且也更容易享受到诸如校验、档生成等功能带来的好处。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值