gson - 在序列化java pojo时包含类名 - > JSON [英] gson - include class name when serializing java pojo -> json

查看:109
本文介绍了gson - 在序列化java pojo时包含类名 - > JSON的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

使用 GSON 我如何将我的列表的类名附加到我输出的json串?我浏览了 API ,并且已经错过了任何参考来做到这一点。我使用 GsonBuilder 在我的真实代码中,但没有看到它的任何选项。

  public class Person {
String名称;

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


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

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

String json = new Gson(people);


$ / code $ / pre
$ b $ p

这给出了以下输出: b
$ b


json = [{name:Alice},{name:Bob}] blockquote>

如何获得以下输出?或类似的内容。


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






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

希望我错过了一些微不足道的小事。提前致谢。

解决方案

我不知道答案仍然很有趣,但您可以做的是以下几点:

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

列表< 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}]}
}


Using GSON how do I append the class name of my List to my outputted json string? I've looked through the api and have missed any reference to do this. I'm using GsonBuilder in my real code but don't see any options for it either.

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);
  }
}

This gives the following output:

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

How do I achieve the following output? or something similar.

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

or

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

Hope it's something trivial that I have just missed. Thanks in advance.

解决方案

I don't know if the answer is still interesting you but what you can do is the following:

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"}]}
}

这篇关于gson - 在序列化java pojo时包含类名 - &gt; JSON的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆