使用GSON序列化Java对象

我想将此对象序列化为JSON字符串

public class Person {

public String id;

public String name;

public Person parent;

}

并获得如下结果:

{id: 1, name: "Joe", parent: 2}

我尝试使用

Person p = new Person(1, "Joe", new Person(2, "Mike"));

Gson gson = new GsonBuilder()

.registerTypeAdapter(Persona.class, new PersonSerializer()).create();

String str = gson.toJson(p);

但是相反,我得到了:

"1"

人员序列化器:

public class PersonSerializer implements JsonSerializer<Person> {

public JsonElement serialize(Person src, Type typeOfSrc, ...) {

return new JsonPrimitive(src.id);

}

}

欢迎任何建议

谢谢,马里奥

回答:

为了获得所需的结果,您需要像这样编写串行器:

public static class PersonSerializer implements JsonSerializer<Person> {

public JsonElement serialize(final Person person, final Type type, final JsonSerializationContext context) {

JsonObject result = new JsonObject();

result.add("id", new JsonPrimitive(person.getId()));

result.add("name", new JsonPrimitive(person.getName()));

Person parent = person.getParent();

if (parent != null) {

result.add("parent", new JsonPrimitive(parent.getId()));

}

return result;

}

}

的结果

    Person p = new Person(1, "Joe", new Person(2, "Mike"));

com.google.gson.Gson gson = new GsonBuilder().registerTypeAdapter(Person.class, new PersonSerializer())

.create();

System.out.println(gson.toJson(p));

将会

{"id":1,"name":"Joe","parent":2}

完整的代码:

import java.lang.reflect.Type;

import com.google.gson.GsonBuilder;

import com.google.gson.JsonElement;

import com.google.gson.JsonObject;

import com.google.gson.JsonPrimitive;

import com.google.gson.JsonSerializationContext;

import com.google.gson.JsonSerializer;

public class GsonSimpleTest {

public static class Person {

public int id;

public String name;

public Person parent;

public Person(final int id, final String name) {

super();

this.id = id;

this.name = name;

}

public Person(final int id, final String name, final Person parent) {

super();

this.id = id;

this.name = name;

this.parent = parent;

}

public int getId() {

return id;

}

public void setId(final int id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(final String name) {

this.name = name;

}

public Person getParent() {

return parent;

}

public void setParent(final Person parent) {

this.parent = parent;

}

}

public static class PersonSerializer implements JsonSerializer<Person> {

public JsonElement serialize(final Person person, final Type type, final JsonSerializationContext context) {

JsonObject result = new JsonObject();

result.add("id", new JsonPrimitive(person.getId()));

result.add("name", new JsonPrimitive(person.getName()));

Person parent = person.getParent();

if (parent != null) {

result.add("parent", new JsonPrimitive(parent.getId()));

}

return result;

}

}

public static void main(final String[] args) {

Person p = new Person(1, "Joe", new Person(2, "Mike"));

com.google.gson.Gson gson = new GsonBuilder().registerTypeAdapter(Person.class, new PersonSerializer())

.create();

System.out.println(gson.toJson(p));

}

}

以上是 使用GSON序列化Java对象 的全部内容, 来源链接: utcz.com/qa/399353.html

回到顶部