Json数据解析各种方法全面分析:
http://www.cnblogs.com/xiaoluo501395377/p/3446605.html
网络数据请求返回一般为Json数据。形如:
{
status: 1,
data: [
{
id: 1,
name: "Tony老师聊shell——环境变量配置文件",
picSmall: "http://img.mukewang.com/55237dcc0001128c06000338-300-170.jpg",
picBig: "http://img.mukewang.com/55237dcc0001128c06000338.jpg",
description: "为你带来shell中的环境变量配置文件",
learner: 12312
},
{
id: 2,
name: "数学知识在CSS动画中的应用",
picSmall: "http://img.mukewang.com/55249cf30001ae8a06000338-300-170.jpg",
picBig: "http://img.mukewang.com/55249cf30001ae8a06000338.jpg",
description: "数学知识与CSS结合实现酷炫效果",
learner: 45625
}
],
msg: "成功"
}
Json数据在安卓应用上的解析一般用到自定义的JavaBean对象,此对象用于映射Json数据。如:
public class NetClassData {
public integer id;
public String name;
public String picSmall;
public String picBig;
public String description;
public integer learner;
}
1. 获取Json数据流
InputStream is = URL(url).openStream()//通过url字符串打开 一个InputStream输入流
Url类的简单解析:
http://blog.csdn.net/harvic880925/article/details/44679239
InputStreamReader isr;//定义一个可读输入流
String result = "";//定义一个字符串用于返回数据流
String line = "";//定义一个字符串,用于存储isr流中每一行的数据
isr = new InputStreamReader(is, "utf-8");//通过InputStream流开启一个InputStreamReader流,并定义编码格式为UTF-8
BufferedReader br = new BufferedReader(isr);//通过InputStreamReader流开启一个bufferedReader流
//逐行读取br中的数据流,并赋值给result
while ((line = br.readLine()) != null) {
result += line;
}
此步骤获得的数据即为一个JsonString数据
2. 解析Json数据
JSONObject jsonObject;
jsonObject = new JSONObject(jsonString);//通过JsonString数据关联JsonObject
JSONArray jsonArray = jsonObject.getJSONArray("data");//获得JsonObject中的名为"data"的JsonArray
for (int i = 0; i < jsonArray.length(); i++) {
//每个JsonArray数组中的元素又是一个JsonObject对像
jsonObject = jsonArray.getJSONObject(i);
netClassData = new NetClassData();//NetClassData为自定义的JavaBean对象,下面实现映射关系
netClassData.picSmall = jsonObject.getString("picSmall");
netClassData.name = jsonObject.getString("name");
netClassData.description = jsonObject
.getString("description");
datalist.add(netClassData);//将数据加入到ArrayList中
}
以上两步便将Json数据获取并解析到一个ArrayList数组中。