在Android开发中,除了XML,json也是一种常用的数据传输格式,独立于语言和平台,比 XML 更小、更快,更易解析。如今JSON数据已经成为了互联网中大多数数据的传递方式,所以必须要熟练掌握。
解析json有三种:
1.Android原生态解析json
2.Gson解析json
3.FastJson解析json
解析实例:
首先通过从服务器获取json文件:
URL url=new URL("http://192.168.43.85:8080/test.xml");
HttpURLConnection connection= (HttpURLConnection) url.openConnection();
//设置请求方式‘
connection.setRequestMethod("GET");
//设置请求连接超时的时间(优化)
connection.setConnectTimeout(5000);
//获得请求返回的结果码(200表示获取成功)
int code=connection.getResponseCode();
//获取服务器返回过来的结果
InputStream is=connection.getInputStream();
BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(inputStream));
StringBuffer stringBuffer = new StringBuffer();
String str=null;
//拼接成一个字符串
while ((str=bufferedReader.readLine()) != null) {
stringBuffer.append(str);
}
json文件中的内容:
{"listid":1,"list":[{"pid":1,"pname":"xiaoxiao","page":16},{"pid":2,"pname":"xiaoyue","page":17},{"pid":3,"pname":"xiexing","page":19}]}
1.Android原生态解析json
JSONObject jsonObject = new JSONObject(stringBuffer.toString());
int id = jsonObject.getInt("listid");
JSONArray jsonArray = jsonObject.getJSONArray("list");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject object = jsonArray.getJSONObject(i);
person person2 = new person();
person2.setPid(object.getInt("pid"));
person2.setPname(object.getString("pname"));
person2.setPage(object.getInt("page"));
Log.i("ssss", person2.toString());
}
2.Gson解析json
http://code.google.com/p/google-gson/里有一个名为Gson的类库,可以用它来解析Json数据,并且,Adroid 3.0平台里其实也就是把这一部分直接整合进Android里了。我们要解析Json数据,直接去网站上下载个jar包,导入到工程里,就可以解析Json数据了。
Gson gson = new Gson();
persons persons = gson.fromJson(stringvuffer.toString(), persons.class);
List<person> list = persons.getList();
for (person person : list) {
Log.i("ssss", person.toString());
}
3.FastJson解析json
FastJson也要导入jar包,去网站上下载fastjaon的jar包,导入后即可。
//persons是自己定义的一个类,当中包含json中的所有键
persons persons1=JSON.parseObject(stringbuffer.toString(),persons.class);
List<person> list=persons1.getList();
for (person person : list) {
Log.i("ssss",person.toString());
}