Gson:将多个json对象映射到单个对象
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Gson:将多个json对象映射到单个对象相关的知识,希望对你有一定的参考价值。
假设我们有这个简单的json:
"Book":
{
"title": "Hello world",
"metadata":
{
"author": "Jeff"
}
}
是否有一种简单的方法可以忽略元数据对象并使用gson将作者直接放入书籍对象中?我应该使用解串器还是更简单的方法?
我需要一个这样的课程:
public class Book
{
private String title;
private String author;
//...
}
答案
使用反序列化器。像这样的东西:
public class BookDeserializer implements JsonDeserializer<Book> {
@Override
public Book deserialize(final JsonElement json, final Type typeOfT, final JsonDeserializationContext context)
throws JsonParseException {
final JsonObject jsonObject = json.getAsJsonObject();
final String title = jsonObject.get("title").getAsString();
JsonElement metaElement = jsonObject.get("metadata");
final String author = metaElement.get("author").getAsString();
final Book book = new Book();
book.setTitle(title);
book.setAuthor(author);
return book;
}
}
如何使用它:
sGson = new GsonBuilder()
.registerTypeAdapter(Book.class, new BookDeserializer())
.create();
注意:我更喜欢使用Constant而不是硬编码字符串,但它仅用于此处的示例;)
以上是关于Gson:将多个json对象映射到单个对象的主要内容,如果未能解决你的问题,请参考以下文章
在Gson中解析数组 - 每个对象都有一个标识符 - 2月14日[重复]