关闭

json解析,我的幼稚

96人阅读 评论(0) 收藏 举报
分类:

以前有一个非常好的解析工具我不用,直到我用了,我才追悔莫及大哭,还是太年轻啊!好进入正题

大家都知道json解析,一般的工具有 Gson ,Fastjson,然而我却没有用它们,现在想想真是后悔啊,以前写了多少那种二B代码

public static ArrayList<Company> getCompany(String urlPath)
			throws Exception {
		ArrayList<Company> companiesList = null;
		String data = getJsonData(urlPath);
		if (data == "[]") {
			return companiesList;
		}
		JSONObject json = new JSONObject(data);
		JSONArray ja = new JSONArray(json.getString("list"));
		if (ja.length() > 0) {
			for (int i = 0; i < ja.length(); i++) {
				companiesList = companiesList == null ? new ArrayList<Company>()
						: companiesList;
				JSONObject jo = ja.getJSONObject(i);
				Company company = new Company();
				company.setUnitName(getValue(jo, "UNIT_NAME"));
				company.setUnitID(getValue(jo, "SYS_ID"));
				company.setUnitCode(getValue(jo, "UNIT_CODE"));
				company.setAddress(getValue(jo, "ADDR"));
				company.setTelephone(getValue(jo, "PHONE"));
				company.setLegalRepresentative(getValue(jo, "CORR_NAME"));
				company.setUnitDevicesNum(getValue(jo, "equitmentcount"));
				companiesList.add(company);
			}
			companiesList.get(0).setSun(json.getString("count"));
			return companiesList;
		} else {
			return companiesList;
		}
	}
这个只是我项目里面一点的二B代码,真要算起来,呵呵回绕地球0.1圈,不过还好研究了一下gson解析,简直唉!后悔啊!

不多说代码等会上传上去贴一下代码:


这个是json地址:  http://apicloud.mob.com/v1/weather/query?key=1149cdb17daeb&city=深圳

然后通过分析json数据的格式我分别写了三个实体类以下   get set方法省略 ,大家自己一定要补上啊

public class User {
    private String msg;
    private String retCode ;
    private List<Result> result=new ArrayList<>();

public class Result {

    private String airCondition;//良,
    private String city;//深圳,
    private String coldIndex;//低发期,
    private String date;//2016-08-30,
    private String distrct;//深圳,
    private String dressingIndex;//薄短袖类,
    private String exerciseIndex;//不适宜,
    private String humidity;// 湿度:61%,
    private String pollutionIndex;// 79,
    private String province;// 广东,
    private String sunrise;// 06;//06,
    private String sunset;// 18;//42,
    private String temperature;// 30℃,
    private String time;// 14;//53,
    private String updateTime;// 20160830150519,
    private String washIndex;// 不适宜,
    private String weather;// 多云,
    private String week;// 周二,
    private String wind;// 西北风3级
    private List<Future> future;

public class Future {
    private String date;// 2016-08-30,
    private String dayTime;// 多云,
    private String night;// 多云,
    private String temperature;// 30°C / 25°C,
    private String week;// 今天,
    private String wind;// 无持续风向 小于3级
                                                            

  这里就把json格式里面对应的字段全部都生成了,一定要注意解析的json字段要和实体一模一样!!!

这里我们来解Json:


    private List<Result> results = new ArrayList<>();
    private List<Future> futures = new ArrayList<>();
    private void GsonText(String json) {
        Gson gson = new Gson();
        User user = gson.fromJson(json, User.class);
        Log.i("msgs", user.getMsg() + "" + user.getRetCode() + user.getResult());
        results = user.getResult();
        for (int i = 0; i < results.size(); i++) {
            Log.i("msgs", results.get(i).getAirCondition());
            Log.i("msgs", results.get(i).getAirCondition());//良,
            Log.i("msgs", results.get(i).getCity());//深圳,
            Log.i("msgs", results.get(i).getColdIndex());//低发期,
            Log.i("msgs", results.get(i).getDate());//2016-08-30,
            Log.i("msgs", results.get(i).getDistrct());//深圳,
            Log.i("msgs", results.get(i).getDressingIndex());//薄短袖类,
            Log.i("msgs", results.get(i).getExerciseIndex());//不适宜,
            Log.i("msgs", results.get(i).getHumidity());// 湿度:61%,
            Log.i("msgs", results.get(i).getPollutionIndex());// 79,
            Log.i("msgs", results.get(i).getProvince());// 广东,
            Log.i("msgs", results.get(i).getSunrise());// 06());//06,
            Log.i("msgs", results.get(i).getSunset());// 18());//42,
            Log.i("msgs", results.get(i).getTemperature());// 30℃,
            Log.i("msgs", results.get(i).getTime());// 14());//53,
            Log.i("msgs", results.get(i).getUpdateTime());// 20160830150519,
            Log.i("msgs", results.get(i).getWashIndex());// 不适宜,
            Log.i("msgs", results.get(i).getWeather());// 多云,
            Log.i("msgs", results.get(i).getWeek());// 周二,
            Log.i("msgs", results.get(i).getWind());// 西北风3级
        }
            futures=results.get(0).getFuture();
        for (int i = 0; i <futures.size() ; i++) {
            Log.i("msgs", futures.get(i).getDate());// 西北风3级
            Log.i("msgs", futures.get(i).getDayTime());// 西北风3级
            Log.i("msgs", futures.get(i).getNight());// 西北风3级
            Log.i("msgs", futures.get(i).getTemperature());// 西北风3级
            Log.i("msgs", futures.get(i).getWeek());// 西北风3级
            Log.i("msgs", futures.get(i).getWind());// 西北风3级
        }

在这里我自己打印了一下可以看到,呵呵,数据全部都出来了这里我们看到很少的代码就把数据解析出来了,以前觉得android api自带的json解析就可以了,现在看看自己确实lol!

当然这里附上一个解析Json数据的时间的一篇文章:http://www.android100.org/html/201506/28/159434.html

确实gson解析的速度的确要快一点,不要小看这么一点,因为应用的性能就是这样提上来的。

源码下载



0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:9083次
    • 积分:368
    • 等级:
    • 排名:千里之外
    • 原创:27篇
    • 转载:0篇
    • 译文:2篇
    • 评论:0条