List,Map,数组型Json生产以及解析
ONE Goal , ONE Passion !
3种类型的格式:
第一: list型:
[{"id":"0001","name":"百年孤独"},{"id":"0002","name":"三个火枪手"},{"id":"0003","name":"红与黑"}]
第二: 数组型:
[{"id":"0001","name":"百年孤独"},{"id":"0002","name":"三个火枪手"},{"id":"0003","name":"红与黑"}]
第三: Map型:
{"0001":{"id":"0001","name":"百年孤独"},"0003":{"id":"0003","name":"红与黑"},"0002":{"id":"0002","name":"三个火枪手"}}
全局使用数据源:
Gson gson = new Gson();
Book book_1 = new Book("0001", "百年孤独");
Book book_2 = new Book("0002", "三个火枪手");
Book book_3 = new Book("0003", "红与黑");
1,List型json生产及解析
生成:
ArrayList<Book> cList = new ArrayList<Book>();
cList.add(book_1);
cList.add(book_2);
cList.add(book_3);
打印list对对象:
[Book [id=0001, name=百年孤独], Book [id=0002, name=三个火枪手], Book [id=0003, name=红与黑]]
// 将list对象直接转换list_Json ------ json格式字符串
String list_Json = gson.toJson(cList);
解析:
// 把数组类型(集合类型也是数组类型)的gson转化为--- 集合
List list= (List) gson.fromJson(list_Json,
new TypeToken<List<Book>>() {
}.getType());
// 转换后的list:
[Book [id=0001, name=百年孤独], Book [id=0002, name=三个火枪手], Book [id=0003, name=红与黑]]
注意: list集合与数组(集合)型json字符串不一样
二者区别在于:集合中存储的数据没有”“;而json字符串格式中key有”“,value如果是String的话有”“;
// list对象:
[Book [id=0001, name=百年孤独], Book [id=0002, name=三个火枪手], Book [id=0003, name=红与黑]]
// 数据(集合)型json字符串:
[{"id":"0001","name":"百年孤独"},{"id":"0002","name":"三个火枪手"},{"id":"0003","name":"红与黑"}]
2,数组型json生产及解析
生成:
Book[] books = { book_1, book_2, book_3 };
// 将数组转换为json字符串
String books_array = gson.toJson(books);
转换后的json字符串 ----books_array :
[{"id":"0001","name":"百年孤独"},{"id":"0002","name":"三个火枪手"},{"id":"0003","name":"红与黑"}]
注意:数组转换成的json字符串与集合转换成的一致.
解析:
Book[] books_new = gson.fromJson(books_array, Book[].class);
System.out.println("数组类型json转化成数组" + books_new[1]);
一般我们不把数组型解析成数组而是解析成集合.
2,Map型json生产及解析
生成:
Map<String, Book> map = new HashMap<String, Book>();
map.put("0001", book_1);
map.put("0002", book_2);
map.put("0003", book_3);
打印的map对象:
{0001=Book [id=0001, name=百年孤独], 0003=Book [id=0003, name=红与黑], 0002=Book [id=0002, name=三个火枪手]}
//将map对象转换为json字符串:
String json_map = gson.toJson(map);
解析:
Map<String, Book> map_new = gson.fromJson(json_map,
new TypeToken<Map<String, Book>>() {
}.getType());
//将map_new 对象遍历
for (Map.Entry<String, Book> book : map_new.entrySet()) {
System.out.println(book.getValue());
}
手动生产json相关:
http://blog.youkuaiyun.com/fengltxx/article/details/51035430
xml相关详解:
http://blog.youkuaiyun.com/fengltxx/article/details/51764040