如何在 Java 中使用 Gson @SerializedName 序列化嵌套对象?

Fat*_*tih 3 java serialization json gson

我有twitter数据。这些数据中有一些nested对象。我想将这些字段收集到Java. 我正在使用@SerializedName注释将一些嵌套字段导入到我的 java 对象中。

我的示例 json 如下所示:

{
  "created_at": "Sat Jun 15 19:21:29 +0000 2019",
  "text": "RT @BuzzTechy: [BEST] Udemy Course - Create a Python Powered Chatbot in Under 60 Minutes  \n\nhttps:\/\/t.co\/jMIW38FmmZ \n\n#AI #Python #Chatbot\u2026",
  "source": "\u003ca href=\"https:\/\/allentowngroup.com\" rel=\"nofollow\"\u003ebobbidigi\u003c\/a\u003e",
  "truncated": false,
  "in_reply_to_screen_name": "asdsf"
  "user": {
    "id": 1724601306,
    "name": "Rob's Coding News In The Hood"
  }
}
Run Code Online (Sandbox Code Playgroud)

和我的java对象:

public class TweetEntity implements Serializable {

private static long serialVersionUID = 1L;

@SerializedName("created_at")
private Date createdAt;

private String text;

private String source;

private Boolean truncated;

@SerializedName("in_reply_to_screen_name")
private String inReplyToScreenName;

@SerializedName("user.name")
private String userName;
Run Code Online (Sandbox Code Playgroud)

}

但这是行不通的。有人对此有任何想法或了解吗?

Sam*_*Sam 7

得到了之前答案的一个简单版本


public class TweetEntity {

  ...

  @SerializedName("user")
  @JsonAdapter(UsernameDeserializer.class)
  private String userName;
}

public static class UsernameDeserializer implements JsonDeserializer<String> {
    @Override
    public String deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) {
        return json.getAsJsonObject().get("name").getAsString();
    }
}
Run Code Online (Sandbox Code Playgroud)