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

Lit*_*cas 1 spring json spring-mvc spring-boot

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

@NotEmpty
@ElementCollection
@Column(name = "TAGS")
private List<String> tags;
Run Code Online (Sandbox Code Playgroud)

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

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

我的JSON:

{
    "stuff": "stuff",
    "stuff": "stuff",
    "tags": [{"Tag 1"}, {"Tag 2"}]
}
Run Code Online (Sandbox Code Playgroud)

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

我得到的错误是:

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

dav*_*xxx 5

"tags": [{"Tag 1"}, {"Tag 2"}]
Run Code Online (Sandbox Code Playgroud)

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

"tags": ["Tag 1", "Tag 2"]
Run Code Online (Sandbox Code Playgroud)

要么更改客户端以发送 String : 数组"tags": ["Tag 1", "Tag 2"]

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

要发送的 Json:

"tags": [{"value": "Tag 1"}, {"value": "Tag 2"}]
Run Code Online (Sandbox Code Playgroud)

后端映射:

private List<MyObject> tags;
Run Code Online (Sandbox Code Playgroud)

在哪里MyObject可以声明:

public class MyObject{
   private String value;
   ... // getter - setter
}
Run Code Online (Sandbox Code Playgroud)