首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >什么时候使用@JsonProperty属性,它的用途是什么?

什么时候使用@JsonProperty属性,它的用途是什么?
EN

Stack Overflow用户
提问于 2012-09-25 21:07:21
回答 5查看 525.1K关注 0票数 230

这个bean 'State‘:

代码语言:javascript
复制
public class State {

    private boolean isSet;

    @JsonProperty("isSet")
    public boolean isSet() {
        return isSet;
    }

    @JsonProperty("isSet")
    public void setSet(boolean isSet) {
        this.isSet = isSet;
    }

}

使用ajax‘success’回调通过网络发送:

代码语言:javascript
复制
        success : function(response) {  
            if(response.State.isSet){   
                alert('success called successfully)
            }

这里需要注解@JsonProperty吗?使用它的好处是什么?我想我可以在不引起任何副作用的情况下删除这个注释。

https://github.com/FasterXML/jackson-annotations/wiki/Jackson-Annotations上读到这个注释时,我不知道什么时候需要使用它?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-09-25 21:15:08

这里有一个很好的例子。我使用它来重命名变量,因为JSON来自.Net环境,在该环境中,属性以大写字母开头。

代码语言:javascript
复制
public class Parameter {
  @JsonProperty("Name")
  public String name;
  @JsonProperty("Value")
  public String value; 
}

这将正确解析到JSON或从JSON解析:

代码语言:javascript
复制
"Parameter":{
  "Name":"Parameter-Name",
  "Value":"Parameter-Value"
}
票数 288
EN

Stack Overflow用户

发布于 2013-10-18 01:20:08

我认为OldCurmudgeon和StaxMan都是正确的,但这里有一句话的答案和简单的例子。

@JsonProperty(名称),告诉Jackson ObjectMapper将JSON属性名称映射到带注释的Java字段的名称。

代码语言:javascript
复制
//example of json that is submitted 
"Car":{
  "Type":"Ferrari",
}

//where it gets mapped 
public static class Car {
  @JsonProperty("Type")
  public String type;
 }
票数 54
EN

Stack Overflow用户

发布于 2014-11-06 04:43:46

好吧,现在值得了.除了通常的序列化和反序列化之外,JsonProperty还用于为变量指定getter和setter方法。例如,假设您有一个如下的有效负载:

代码语言:javascript
复制
{
  "check": true
}

和一个反序列化程序类:

代码语言:javascript
复制
public class Check {

  @JsonProperty("check")    // It is needed else Jackson will look got getCheck method and will fail
  private Boolean check;

  public Boolean isCheck() {
     return check;
  }
}

然后,在这种情况下,需要JsonProperty注释。但是,如果类中也有一个方法

代码语言:javascript
复制
public class Check {

  //@JsonProperty("check")    Not needed anymore
  private Boolean check;

  public Boolean getCheck() {
     return check;
  }
}

也可以看看这个文档:http://fasterxml.github.io/jackson-annotations/javadoc/2.3.0/com/fasterxml/jackson/annotation/JsonProperty.html

票数 41
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12583638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档