一、网址(url)转换为json数据的函数
对于数据是json类型的网址,需要先将网址解析为json数据,解析函数如下所示:
public String loadJson(String url) {
StringBuilder json = new StringBuilder();
try {
URL urlObject = new URL(url);
URLConnection uc = urlObject.openConnection();
BufferedReader in = new BufferedReader(new InputStreamReader(uc.getInputStream(), "utf-8"));
String inputLine = null;
while ((inputLine = in.readLine()) != null) {
json.append(inputLine);
}
in.close();
} catch (Exception e) {
e.printStackTrace();
}
return json.toString();
}
其中的参数为网址(url),例如"https://p.3.cn/prices/mgets?skuIds=J_10026711061553"。
二、不同json数据格式的不同处理
1.数组类型,json数据最外层是[ ],形如下边所示数据类型
[
{
"p": "2999.00",
"op": "2999.00",
"cbf": "0",
"id": "J_10026711061553",
"m": "9999.00"
}
]
解析方法:
(1)首先根据数组对象所包含的内容,解析为相应的javabean文件,如上方代码,解析为下方格式:
public class Price {
private String p;
private String op;
private String cbf;
private String id;
private String m;
public void setP(String p) {
this.p = p;
}
public String getP() {
return p;
}
public void setOp(String op) {
this.op = op;
}
public String getOp() {
return op;
}
public void setCbf(String cbf) {
this.cbf = cbf;
}
public String getCbf() {
return cbf;
}
public void setId(String id) {
this.id = id;
}
public String getId() {
return id;
}
public void setM(String m) {
this.m = m;
}
public String getM() {
return m;
}
}
(2)根据以上,可以最终写出数组类型的json数据解析啦:
String pr = "https://p.3.cn/prices/mgets?skuIds=J_10026711061553";
List<Price> prices = JSONArray.parseArray(loadJson(pr), Price.class);
String priceOne = prices.get(0).getP();
代码分析:
首先pr是网址;之后是用
List<Price> prices = JSONArray.parseArray(loadJson(pr), Price.class);
其中左边,对于数组类型,要用list类型来解析,参数Price是上边javabean的名字,然后对于右边,要用JSONArray.parseArray(loadJson(pr), Price.class)来解析,第1个参数是解析出来的json数据,第2个参数是定义的javabean类,此时即将解析出来的json数据存入了prices中,如果json原数据只有一个数组,那么想要得到某个具体数据(比如其中的"p")就用prices.get(0).getP()即可,如果多个数组即改变get(0)中的数字即可。
2.对象类型,json数据最外层是{},前边步骤都是相似的,在最终解析代码
JSONRootBean jrt = JSONObject.parseObject(loadJson(url), JSONRootBean.class);
只有这个是不一样的,对于对象解析使用的是JSONObject.parseObject()函数,其中传入参数与上边格式一样。
如有不清楚,记得私信博主哦!
版权声明:本文为qq_44387002原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。