日期:2014-05-16 浏览次数:20537 次
?
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 }?
?