【问题标题】:using jersey-json to map field names with spaces使用 jersey-json 将字段名称与空格进行映射
【发布时间】:2016-05-05 16:34:01
【问题描述】:

我有一个像这样的 gson 生成的 POST 应用程序/json 请求:

{"Process Name": "Urlaubsantrag", "Action Performed EmailId": "somebody@somewhere.de", "Process Step": "Start"}

我想使用 jersey 将 json 数据映射到我的 bean。喜欢

@POST
@Path("/post")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public String createVacation(Vacation aVacation) 
{
    //DO something
}

Vacation 类代表我的模型的地方

    public class Vacation {
    String processName;
    String actionPerformedEmailID;
    String processStep;
    String actionName;
etc...

问题是,json 代码中的所有字段名称中都有空格。我在模型中查找正确的字段名称时遇到问题,因此“进程名称”将映射到 processName。

我该怎么做?还是有其他方法可以处理?

【问题讨论】:

    标签: java json jersey mapping


    【解决方案1】:

    回答这个问题可能为时已晚,但今天我遇到了同样的问题(除了它是下划线而不是字段名称中的空格)。我使用 XML 绑定注释修复了这个问题。

    所以,我们需要以这种方式注释 Vacation 类及其字段

    @XmlRootElement
    @XmlAccessorType(XmlAccessType.FIELD)
    public class Vacation {
    @XmlElement(name = "Process Name")
    String name;
    @XmlElement(name = "Action Performed EmailId")
    String actionPerformedEmailID;
    @XmlElement(name = "Process Step")
    String processStep;
    String actionName;
    

    等等

    如果 JSON 字段和 POJO 字段的名称相同,则可以省略 @XmlElement 注释。

    【讨论】:

    • 这是一个替代方案,但如果有多个字段有空格怎么办?我正在使用 @JsonProperty("account id") private String accountId;为此,但没有成功。
    猜你喜欢
    • 1970-01-01
    • 2012-04-02
    • 2018-12-23
    • 2018-07-29
    • 1970-01-01
    • 1970-01-01
    • 2011-06-27
    • 1970-01-01
    • 2018-01-05
    相关资源
    最近更新 更多