android开发中,与服务器交互80%是通过json方式传输数据,JSON 也是基于纯文本的数据格式,JSON具有跨平台的优势,相对xml,json解析起来更方便,简单,解析数据所消耗的流量也会比xml少,而且json有一些好的第三方库文件,已为开发者封装好了,
JSON语法规则:
JSON 数据的书写格式是:名称/值对
名称/值对组合中的名称写在前面(在双引号中),值对写在后面(同样在双引号中),中间用冒号隔开:比如;"firstName":"John"
比如值是基本类型
{"city":"Beijing","street":"ChaoyangRoad","postcode":100025}
{}代表是一个对象,这些都是简单的key/html' target='_blank'>value形式,如果用对象来表示的话:
public class Info { public String city; public String street; public int postcode;}
在这个javabean中并没有使用get,set方法,因为get,set方法是使用反射做的,比较慢,这是json最简单的方式,key/value形式,我们知道json有三种种方式,一种是key/value,key/Object,key/array,现在讲讲key/Object形式
比如:
{"name":"Michael","address":{"city":"Beijing","street":" Chaoyang Road ","postcode":100025}}
这里有2个对象,一个是最外面的,一个是address:它也是一个对象,我们说了{}就代表一个对象,因此 首先写里面的对象,然后再写外面的对象,代码如下:
Info.java
package com.example.josn;public class Info { public String city; public String street; public int postcode;}
Person.java
/** * {"name":"Michael","address":{"city":"Beijing","street":" Chaoyang Road ","postcode":100025}} * @author carpool * */public class Person { public String name; public Info info;}
json解析代码:
</pre><pre class="java" name="code">String jsonString = getJsonString(); try { JSONObject jb = new JSONObject(jsonString); Person p = new Person(); Info info = new Info(); info.city = jb.getJSONObject("address").getString("city"); info.street = jb.getJSONObject("address").getString("street"); info.postcode = jb.getJSONObject("address").getInt("postcode"); p.info = info; p.name = jb.getString("name"); } catch (JSONException e) { e.printStackTrace(); }
现在还剩下一个种形式json,就是key/array,比如:
{ "people": [ { "firstName": "Brett", "lastName": "McLaughlin", "email": "aaaa" }, { "firstName": "Jason", "lastName": "Hunter", "email": "bbbb" }, { "firstName": "Elliotte", "lastName": "Harold", "email": "cccc" } ]}
我们知道{}代表的是一个对象,[]代表的是数组,表示数组中存放了很多对象,对象之间用逗号(,)分开,
这个用对象封装一般有二种形式,一是直接用集合把解析的对象存储起来,二是用一个类封装一个集合,集合的对象就是上面所解析的对象即可
第一种方式:
People.java
public class People { public String firstName; public String lastName; public String email;}
解析:
String jsonString = getJsonString();//json串 try { JSONObject jb = new JSONObject(jsonString); JSONArray ja = jb.getJSONArray("people"); ArrayList<People> ps = new ArrayList<People>(); for(int i=0;i<ja.length();i++){ People p = new People(); p.email = ja.getJSONObject(i).getString("email"); p.firstName = ja.getJSONObject(i).getString("firstName"); p.lastName = ja.getJSONObject(i).getString("lastName"); ps.add(p); } } catch (JSONException e) { e.printStackTrace(); }
第二种写法:
public class Multiplepeople { public List<People> peoples;}
String jsonString = getJsonString();//json串 try { JSONObject jb = new JSONObject(jsonString); JSONArray ja = jb.getJSONArray("people"); Multiplepeople multiplepeople = new Multiplepeople(); List<People> ps = new ArrayList<People>(); for(int i=0;i<ja.length();i++){ People p = new People(); p.email = ja.getJSONObject(i).getString("email"); p.firstName = ja.getJSONObject(i).getString("firstName"); p.lastName = ja.getJSONObject(i).getString("lastName"); ps.add(p); } multiplepeople.peoples =ps; } catch (JSONException e) { e.printStackTrace(); }json就到了,多练习就会了!
代表的是key为address,值是个对象,
??
PHP编程郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
新闻热点
疑难解答