什么是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
- }