【问题标题】:Can I use number as property name in Jackson mapper?我可以在杰克逊映射器中使用数字作为属性名称吗?
【发布时间】:2013-08-02 01:28:03
【问题描述】:

我正在使用 Spring MVC3.2 和 Jackson 进行 JSON 映射。我想用数字序列化和反序列化属性名称。这是我的课:

public Usage implement Serializable {

  private String imei;

  @JsonIgnore
  @JsonProperty("4")
  private long j2j;

  @JsonIgnore
  @JsonProperty("8")
  private long call;


  //Getters and setters
} 

JSON:

{"imei":"352985052917115", "4":20, "8":10}

控制器:

@ResponseBody
@RequestMapping(value="/alert")
public JsonResult<Void> handleOverUsageAlertByDevice(@RequestBody Usage usage){
    //Do something
}

但是当我将 JSON 发送到控制器时,会发生 404 Bad request 错误,说:

The request sent by the client was syntactically incorrect.

我可以使用数字作为 Json 属性名称吗?

您的回答将不胜感激。

【问题讨论】:

  • 您的 JSON 看起来有效,根据 json validator,我会在您的代码中的其他地方寻找问题。
  • 尝试使用默认属性名称发送 JSON。如果一切正常,这不是将数字作为属性名称的问题。我认为,我们可以使用数字作为属性名称。

标签: java json jackson


【解决方案1】:

是的,“数字字符串”是完全合法的 JSON 名称,Jackson 支持它们。 所以问题不应该是那个,而是请求处理中的其他问题。

【讨论】:

    【解决方案2】:

    请尝试在发送请求时设置内容类型。 内容类型应设置为“application/json”。

    【讨论】:

    • 这应该是一条评论。
    猜你喜欢
    • 1970-01-01
    • 2011-10-22
    • 1970-01-01
    • 1970-01-01
    • 2015-12-23
    • 2012-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多