使用 Spring boot 解析具有无效键值的 JSON 对象
Posted
技术标签:
【中文标题】使用 Spring boot 解析具有无效键值的 JSON 对象【英文标题】:Parsing a JSON object with invalid key values using Spring boot 【发布时间】:2016-01-31 03:09:35 【问题描述】:我已经使用 Spring boot 有一段时间了,所以我可以说我对使用它非常满意。
但是有一个问题我永远无法解决。 当我希望我的 Spring 引导服务器使用来自前端的 JSON 对象时,我通常像这样使用@RequestBody: 如果 JSON 对象如下所示:
"name":"Jason"
我会像这样创建一个 POJO:
public class User
private String name;
public void setName(String name)
this.name=name;
public String getName()
return this.name
然后在我的主控制器中,我会像这样简单地使用@RequestBody:
@RequestMapping(value="createUser", method = RequestMethod.POST)
public void createUser(@RequestBody User user)
//code here
这会起作用,因为 JSON 对象中的键“name”与 Java User 对象的属性“name”匹配。
但是,在我当前的项目中,我必须使用带有 " # Name ":"Jason" 之类的键的 JSON 对象
在这种情况下,我无法创建带有名为#Name 的属性的 POJO 对象,因为显然对象的属性不能以 # 开头,也不能有空格。
当遇到这样的问题时,我通常会这样做
@RequestBody HashMap<String, String> map
然后
User newUser = new User();
newUser.setName(map.get(" # Name"));
但是,当您有一个包含 40 多个键的 JSON 对象时,这可能会变得很麻烦。
有没有更简单的方法来解析带有在 Java 中无效的键的 JSON 对象?
非常感谢!
【问题讨论】:
【参考方案1】:尝试使用@JsonProperty
注释您的name
成员。
@JsonProperty(" # name")
private String name;
这将允许反序列化器将您的 JSON 有效负载中的密钥与您的 POJO 成员相匹配。
【讨论】:
有时我想知道为什么我没有早点来 Stack Overflow -_- .. 这会节省我在处理哈希图上浪费的时间!非常感谢darrengorman!正是我想要的!像魔术一样工作!以上是关于使用 Spring boot 解析具有无效键值的 JSON 对象的主要内容,如果未能解决你的问题,请参考以下文章
带有 Thymeleaf th:object 的 Spring Boot 使用具有现有值的对象而不覆盖它们
spring boot中请求json正文中存在变量键值时处理RequestBody
如何为具有属性依赖项的 Spring Boot Application 类编写测试用例 - 无法解析占位符