上一篇讲到使用org.json包解析json数据,下面讲另一种常用的json解析方法:gson Google推出的一种解析json的方式,并对上一篇的遗漏做一些补充。
上一篇中我只是贴图,忘了对json格式做一下基本的介绍。这里稍作补充:
1、json中的数据格式:对象(就是“{}”中的),数组(“[]”中的),数字,字符串,布尔值,空值(null)。
2、json格式:“key”:“value”这种格式就是键值对,用来描述对象的某些属性,在{}中的是对象,在[]中的是数组。json是允许嵌套的。
------------------------------------------------------------------------------------------
回归正题:gson解析json。要使用gosn首先要下载gson包并导入自己的工程中。
gson中最重要的方法莫过于:toJson(),和fromJson()。即序列化和反序列化。本文中的json文件可从上一篇博客中找到,为了简洁起见这里不贴出来了。代码如下:
package com.demo.gosn;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import com.google.gson.Gson;
public class JsonDecodeUseGson {
public static void main(String[] args) {
String filePath = new File("jsonFile").getAbsolutePath()+"\\json.txt";
String jsonStr = readFromTXT(filePath);
List<Programmer> list = jsonDecode(jsonStr);
for(Programmer p : list){
//tojson方法使用举例
Gson g = new Gson();
System.out.println(p.lastName);
System.out.println(g.toJson(p));
}
}
public static String readFromTXT(String filePath){
InputStreamReader isr = null;
String resault = "";
try{
isr = new InputStreamReader(new FileInputStream(filePath), "utf-8");
BufferedReader bf = new BufferedReader(isr);
String line = "";
while((line=bf.readLine())!=null){
resault += line;
}
isr.close();
}catch(Exception e){
e.printStackTrace();
}
return resault;
}
/**
* 这里演示用gson解析json。
*/
/**
* 内部类(不必非得是内部类),其中属性名称必须与json串中key的名称一致。
* 自定义类的内部结构,我这里图省事只对json串中部分内容(programmers)做了解析。
* @author Administrator
*
*/
class Programmer{
private String firstName;
private String lastName;
private String email;
}
class Programmers{
private List<Programmer> programmers = new ArrayList<JsonDecodeUseGson.Programmer>();
}
/**
* 使用gson解析数组类型的json串
* @param jsonStr
* @return
*/
public static List<Programmer> jsonDecode(String jsonStr){
Gson gson = new Gson();
List<Programmer> ps = gson.fromJson(jsonStr, Programmers.class).programmers;
return ps;
}
}
对比上篇使用org.json的解析喜欢哪个就用哪个,朋友,你离精通json解析不远了。