三种方法:
private String jsonData1 = "[{\"name\":\"tom\",\"age\":\"20\"},{\"name\":\"lily\",\"age\":\"21\"}]";
1。解析方法
public void parseJson(String jsonData){
try {
//如果需要解析JSON数据,首先要生成JsonReader对象
JsonReader reader = new JsonReader(new StringReader(jsonData));
/**
* 1.现在开始解析一个数组
* 2.开始解析对象
* 3.解析键值对
* 4.解析键值对
* 5.解析对象结束
* 6。开始解析对象
* 7.解析键值对
* 8.解析键值对
* 9.解析对象结束
* 10.解析数组结束
*/
reader.beginArray();
while(reader.hasNext()){//有没有下一个
reader.beginObject();
while(reader.hasNext()){//判断有没有键值对
String tagname = reader.nextName();
if(tagname.equals("name")){
System.out.println("name=------>" + reader.nextString());
}else if(tagname.equals("age")){
System.out.println("age--->" + reader.nextInt());
}
}
reader.endObject();
}
reader.endArray();
} catch (IOException e) {
e.printStackTrace();
}
}
解析方法二:
public void parseJson(String jsonData){
System.out.println(jsonData);
Gson gson = new Gson();
User user = gson.fromJson(jsonData, User.class);
System.out.println("name----->" + user.getName());
System.out.println("age----->" + user.getAge());
}
、、这种只能解析对象,不可以解析数组的
解析方法三:
import java.lang.reflect.Type;
import java.util.Iterator;
import java.util.LinkedList;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
public class JsonUtilsArray {
public void parseJson(String jsonData){
System.out.println(jsonData);
Type listType = new TypeToken<LinkedList<User>>(){}.getType();
Gson gson = new Gson();
LinkedList<User> users= gson.fromJson(jsonData, listType);
for (Iterator iterator = users.iterator(); iterator.hasNext();) {
User user = (User) iterator.next();
System.out.println("name----->" + user.getName());
System.out.println("age----->" + user.getAge());
}
}
}