@RequestBody,在POST请求中发送List <string>

时间:2017-08-17 19:39:31

标签: json spring spring-mvc spring-boot

我有一个基本的POJO,其字段如下所示:

@NotEmpty
@ElementCollection
@Column(name = "TAGS")
private List<String> tags;

我正在尝试将JSON格式的POST请求发送到以下控制器:

@RequestMapping(value = "/post", method = RequestMethod.POST)
public void createPost(@RequestBody BlogPost blogPost) {
    blogPostService.addPost(blogPost);
}

我的JSON:

{
    "stuff": "stuff",
    "stuff": "stuff",
    "tags": [{"Tag 1"}, {"Tag 2"}]
}

基本上我的问题是我不知道如何将其转换为List。我试过寻找答案,但我没有找到任何答案。这甚至可能吗?

我得到的错误是:

  

JSON解析错误:无法从START_OBJECT标记中反序列化java.lang.String的实例;

2 个答案:

答案 0 :(得分:3)

"tags": [{"Tag 1"}, {"Tag 2"}]

对应于一个对象数组,而不是一个应该表示为的字符串数组:

"tags": ["Tag 1", "Tag 2"]

更改客户端以发送字符串数组:"tags": ["Tag 1", "Tag 2"]

否则,更改客户端和后端端以声明使用包含String值的自定义类参数化的List。

Json发送:

"tags": [{"value": "Tag 1"}, {"value": "Tag 2"}]
后端的

映射:

private List<MyObject> tags;

可以声明MyObject的地方:

public class MyObject{
   private String value;
   ... // getter - setter
}

答案 1 :(得分:2)

你的pojo中有字符串列表但是发送了对象列表 删除括号

{
"stuff": "stuff",
"stuff": "stuff",
"tags": ["Tag 1", "Tag 2"]
}