JSON数据解析
其实关于json在做毕业设计的时候就用过了,当时使用MongoDB来作数据存储,No-Sql数据库中存储的就是JSON形式,当时使用了simple.json来作JSON的解析,这次借机当做一次整理
什么是JSON
1 JavaScript Object Notation
2 JSON数据是一系列键值对的集合
3 JSON在网络数据传输中应用广泛
4 JSON相对于XML,解析更方便
{ "name":"Michael", "address": { "city":"Beijing", "street":"xxxRoad", "post":"200000" } }
大括号就是一个JSON对象 中括号代表一个JSON对象的数组
JSON数据格式的特点
JSON vs XML
●JSON和XML可读性基本相同
●JSON和XML同样拥有丰富的解析手段
●JSON相对于XML体积更小
●JSON与JavaScript交互更方便
●JSON对数据描述性相对较差
使用Gson解析JSON数据
自带JsonReader 针对3.0 因此不建议使用
Gson 导入gson.jar
第一种方式(普通解析)
//首先生成一个JsonReader对象
JsonReader reader= new JsonReader(new StringReader(jsonData));
reader.beginArray(); //代表开始解析数组
while(reader.hasNext()){
reader.beginObejct(); //代表开始解析对象
while(reader.hasNext()){
String tagName=reader.nextName(); //得到键
reader.nextInt(); //得到值 同样还有nextString等
}
reader.endObject();
}
reader.endArray();
第二种方式(解析一个JSON对象)
//创建一个代表JSON对象的Bean
Gson gson=new Gson();
User user=gson.fromJson(jsonData,User.class); //jsonData是一个Json对象
第三种方式(JSON对象数组)
Type listType=new TypeToken<LinkedList<User>>(){}.getType(); //TypeToken是一个空的抽象类
Gson gson=new Gson();
LinkedList<User> users=gson.fromJson(jsonData,ListType); //User对象会被保存到LinkedList中
//再进行遍历
for(Iterator iterator = users.iterator();iterator.hasNext();){
User user=(User)iterator.next();
//...doSomething
}