您的位置:首页 > 其它

Gson解析之字段名和实体类属性名不一致的处理

2016-08-03 10:34 573 查看
当接口返回的json字段名和实体类的属性名不一致时的处理:

示例json:

public static final String jsonStr = "{\"title\":\"投资交流\",\"isbn-10\":\"032133678X\",\"isbn-13\":\"978-0321336781\",\"authors\":[\"Joshua Bloch\",\"Neal Gafter\"]}";


定义实体类Book:

public class Book {
public String title;
public String isbn1;
public String isbn3;
public String[] author;

// 定义静态内部类-->序列化器
public static class BookDeserializer implements JsonDeserializer<Book> {

@Override
public Book deserialize(JsonElement json, Type arg1,
JsonDeserializationContext arg2) throws JsonParseException {

Book book = new Book();
JsonObject jsonObject = json.getAsJsonObject();
book.title = jsonObject.get("title").getAsString();
book.isbn1 = jsonObject.get("isbn-10").getAsString();
book.isbn3 = jsonObject.get("isbn-13").getAsString();

JsonArray jsonAuthorsArray = jsonObject.get("authors").getAsJsonArray();
String[] authors = new String[jsonAuthorsArray.size()];
for (int i = 0; i < authors.length; i++) {
authors[i] = jsonAuthorsArray.get(i).getAsString();
}
book.author = authors;
return book;
}
}
}


解析json:

Book book = new GsonBuilder().registerTypeAdapter(Book.class, new Book.BookDeserializer()).create().fromJsonWithNoException(jsonStr, Book.class);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: