如何使用Spring Boot在密钥中使用连字符对JSON进行序列化?

时间:2018-07-24 14:34:45

标签: json spring-boot serialization

我有以下JSON ...

{
    "navigation-items":[
       {
           "title":"Title",
           "description":"This is the desc",
           "link":"http://google.com"
       }
    ]
}

我有以下Java

public class ExternalConfig {
    @SerializedName("navigation-items")
    private List<NavigationItem> items;

    public NavigationItem getNavItem(Integer index){
        return items.get(index);
    }

    public void putNavItem(NavigationItem item){
        items.add(item);
    }

    public Integer navItemSize(){
        return items == null ? 0 : items.size();
    }
}

...

@PostMapping("config")
@ResponseBody
public void setConfig(@RequestBody ExternalConfig config){
    System.out.println(config.navItemSize() > 0);
}

但是当我发送带有以下正文的请求时......

{
    "navigation-items":[
        {
            "title":"Title",
            "description":"This is the desc",
            "link":"http://google.com"
        },{
            "title":"Test 2",
            "description":"asdasdsadsadas",
            "link":"http://drudgereport.com"
        }
    ]
}

但是当我在端点中中断时,该项为null。如何将带有连字符的JSON传递给Spring Boot?

2 个答案:

答案 0 :(得分:0)

如果您使用spring-boot,请使用@JsonProperty。

@JsonProperty("navigation-items")
private List<NavigationItem> items;

答案 1 :(得分:0)

这里真正的问题是我没有像这样包括杰克逊-数据绑定...

 compile 'com.fasterxml.jackson.core:jackson-databind:latest.release'

由于我已经有了,所以不确定是否有使用GSON的方法,但是现在我只使用杰克逊。