Google JsonFactory(JacksonFactory)fromString不起作用 - 所有字段都为空

时间:2016-06-18 11:36:17

标签: java json jackson

我有一个对象:

@JsonIgnoreProperties(ignoreUnknown = true)
public class OauthPrincipal {
    @JsonProperty
    String id;

    @JsonProperty
    String name;

    @JsonProperty
    String email;

    public OauthPrincipal() {
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }
    ... other [get|set]ters
}

当我这样做时有效:

final String jsonIdentity = request.execute().parseAsString();
debug(jsonIdentity);
ObjectMapper om = new ObjectMapper();
OauthPrincipal o;
o = om.readValue(jsonIdentity, OauthPrincipal.class);
return o;

但是当我使用JsonFactory(这是一个new JacksonFactory()时,所有字段对于相同的JSON都是null

jf.fromString(json, OauthPrincipal.class

日志中的JSON是:

07:31:44,040 ERROR [stderr] (default task-6)  {
07:31:44,040 ERROR [stderr] (default task-6)  "id": "11",
07:31:44,040 ERROR [stderr] (default task-6)  "email": "example@gmail.com",
07:31:44,040 ERROR [stderr] (default task-6)  "verified_email": true,
07:31:44,040 ERROR [stderr] (default task-6)  "name": "mike",
07:31:44,040 ERROR [stderr] (default task-6)  "given_name": "mike",
07:31:44,040 ERROR [stderr] (default task-6)  "family_name": "b",
07:31:44,040 ERROR [stderr] (default task-6)  "link": "https://plus.google.com/xyz",
07:31:44,040 ERROR [stderr] (default task-6)  "picture": "https://lh3.googleusercontent.com/snipped/photo.jpg",
07:31:44,040 ERROR [stderr] (default task-6)  "locale": "en"
07:31:44,040 ERROR [stderr] (default task-6) }

1 个答案:

答案 0 :(得分:0)

Google Client Library JSON显示@Key符号用法:

public class Item {
  @Key
  public String id;
  @Key
  public String value;
}

我和JsonFactory(下面是JacksonFactory)有同样的问题,在我的类定义中使用@Key表示法解决了它。