假设我们有一个简单的json:
"Book":
{
"title": "Hello world",
"metadata":
{
"author": "Jeff"
}
}
是否有一种简单的方法可以忽略元数据对象,并使用gson将作者直接放入books对象中?我应该为此使用解串器吗?还是有更简单的方法?
我需要一个像这样的课程:
public class Book
{
private String title;
private String author;
//...
}
答案 0 :(得分:0)
使用反序列化器。像这样:
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而不是硬编码的字符串,但这仅是这里的示例;)