gpt4 book ai didi

java - 如何将 JSON 对象解码为 Java 类?

转载 作者:行者123 更新时间:2023-11-30 09:45:41 25 4
gpt4 key购买 nike

我有 Spring REST 应用程序,它可以在发生 GET 请求时将对象编码为 JSON。但是我应该为 POST 方法做什么。我发送了一个 JSON 对象,但它无法将其解码为 Java 对象。这是我的 Controller 的一个方法:

@RequestMapping(value = "/user", method = RequestMethod.POST)
public void createUser(HttpServletResponse response, @RequestBody User user) {
...
response.setStatus(HttpServletResponse.SC_OK);
}

我这样发送我的 JSON:

        var userName = $('#userName').val();
var password = $('#password').val();
var mail = $('#mail').val();
var admin = $("#admin").is(':checked');
var user = {userName: userName, password: password, mail: mail, admin:admin};
$.ajax({
async : false,
type: 'POST',
contentType: 'application/json',
url: '/sfd/user',
data: user,
dataType: 'json',
success: function(data) {
...
},
error: function(data) {
...
}
});

附言:这里:http://blog.springsource.com/2010/01/25/ajax-simplifications-in-spring-3-0/它说:

If there are validation errors, a HTTP 400 is returned with the error messages, otherwise a HTTP 200 is returned.

我有 400 错误请求错误。也许问题与此有关?

PS2:我应该在设置所有元素后发送 User 对象吗?我的意思是用户对象有一些其他属性,即地址,但我没有设置并从客户端发送它。

PS3:当我调试 AbstractHandlerExceptionResolver 的 resolveException 方法时,我看到了那个错误。它说'u'是未定义的字符(我测试它'u'是JSON的第一个键=>用户名的第一个字符)。

最佳答案

您的 XML 中应该有以下设置:

<context:annotation-config/> 

然后确保 jackson jar 在你的类路径中:

在我的项目中,我更喜欢将其设置为 Spring Bean:

它会将您的 json 数据反序列化为对象。

您可以在这里阅读更多相关信息:

http://blog.springsource.com/2010/01/25/ajax-simplifications-in-spring-3-0/

关于java - 如何将 JSON 对象解码为 Java 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7483134/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com