json数据网址(url)解析

一、网址(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版权协议,转载请附上原文出处链接和本声明。