【问题标题】:gson - include class name when serializing java pojo -> jsongson - 序列化 java pojo -> json 时包含类名
【发布时间】:2012-11-07 15:13:13
【问题描述】:

使用GSON 如何将我的List 的类名附加到我输出的json 字符串中?我浏览了api 并错过了任何参考。我在我的真实代码中使用GsonBuilder,但也没有看到任何选项。

public class Person {
  String name;

  public Person(String name){
    this.name = name;
  }

  public static void main(String [] args){
    Person one = new Person("Alice");
    Person two = new Person("Bob");

    List<Person> people = new ArrayList<Person>();
    people.add(one);
    people.add(two); 

    String json = new Gson(people);
  }
}

这给出了以下输出:

json = [{"name": "Alice"},{"name": "Bob"}]

如何实现以下输出?或类似的东西。

json = {"person":[{"name": "Alice"},{"name": "Bob"}]}

json = [{"person":{"name": "Alice"}},{"person":{"name": "Bob"}}]

希望这是我刚刚错过的微不足道的事情。提前致谢。

【问题讨论】:

  • 最简单的解决方案可能是创建一些其他类,该类将包含一些名为“person”的变量(或人员类型列表)。
  • 这个问题解决了与stackoverflow.com/questions/4623329/… 几乎相同的问题,并且接受的答案也几乎相同。

标签: java json gson


【解决方案1】:

我不知道答案是否仍然让你感兴趣,但你可以做的是:

public static void main(String [] args){
    Person one = new Person("Alice");
    Person two = new Person("Bob");

    List<Person> people = new ArrayList<Person>();
    people.add(one);
    people.add(two); 

    Gson gson = new Gson();
    JsonElement je = gson.toJsonTree(people);
    JsonObject jo = new JsonObject();
    jo.add("person", je);
    System.out.println(jo.toString()); //prints {"person":[{"name": "Alice"},{"name": "Bob"}]}
}

【讨论】:

    猜你喜欢
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 2012-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多