android 解析数据之Gson

1、套路开始:先在android studio的setting中加入GsonFormat的插件

2、选好你要加载的Json数据

3、进入你需要加载的Json界面,将数据复制,并创建一个类

我这里创建的类名叫TvInfo(你可以根据实际情况取名),进入后(alt+s)GsonFormat快捷键,把你复制的数据粘贴到框内并自动生成代码即可

TvInfo

package com.chuanxidemo.shaoxin.demo09;

/**
 * Created by shaoxin on 2017/2/25.
 */

public class TvInfo {

    /**
     * lon : 120.58531
     * level : 2
     * address :
     * cityName :
     * alevel : 4
     * lat : 31.29888
     */

    private double lon;
    private int level;
    private String address;
    private String cityName;
    private int alevel;
    private double lat;

    public double getLon() {
        return lon;
    }

    public void setLon(double lon) {
        this.lon = lon;
    }

    public int getLevel() {
        return level;
    }

    public void setLevel(int level) {
        this.level = level;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getCityName() {
        return cityName;
    }

    public void setCityName(String cityName) {
        this.cityName = cityName;
    }

    public int getAlevel() {
        return alevel;
    }

    public void setAlevel(int alevel) {
        this.alevel = alevel;
    }

    public double getLat() {
        return lat;
    }

    public void setLat(double lat) {
        this.lat = lat;
    }

    @Override
    public String toString() {
        return "TvInfo{" +
                "lon=" + lon +
                ", level=" + level +
                ", address=‘" + address + ‘\‘‘ +
                ", cityName=‘" + cityName + ‘\‘‘ +
                ", alevel=" + alevel +
                ", lat=" + lat +
                ‘}‘;
    }
}

4、创建Gson解析数据的基类

GsonUtil

package com.chuanxidemo.shaoxin.demo09;

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

/**
 * Created by shaoxin on 2017/2/25.
 */

public class GsonUtil {
    public static BufferedReader bufferedReader;
    public static StringBuffer stringBuffer;

    // 将Json数据解析成相应的映射对象
    public static <T> T parseJsonWithGson(String jsonData, Class<T> type) {
        Gson goson = new Gson();
        T result = goson.fromJson(jsonData, type);
        return result;
    }

    // 将Json数组解析成相应的映射对象列表
    public static <T> List<T> parseJsonArrayWithGson(String jsonData,  Class<T> cls) {
        Gson gson = new Gson();
        List<T> result = new ArrayList<>();
        result = gson.fromJson(jsonData, new TypeToken<List<T>>() {
        }.getType());
        return result;
    }

    // 根据json数据地址获取数据
    public static String getData(String jsonURL) {
        try {
            stringBuffer = new StringBuffer();
            URL url = new URL(jsonURL);//json地址
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setRequestMethod("GET");//使用get方法接收
            InputStream inputStream = connection.getInputStream();//得到一个输入流
            bufferedReader = new BufferedReader(new InputStreamReader(inputStream, "UTf-8"));
            String sread = null;
            while ((sread = bufferedReader.readLine()) != null) {
                stringBuffer.append(sread);
                stringBuffer.append("\r\n");
            }
//            Log.i("msg", "onClick: " + stringBuffer.toString());
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return stringBuffer.toString();
    }

}

MainActivity

package com.chuanxidemo.shaoxin.demo09;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
    GsonUtil gsonUtil;
    private TextView txt;
    private Button getData;
    TvInfo tvInfo;
    Handler handler;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        txt = (TextView) findViewById(R.id.txt);
        getData = (Button) findViewById(R.id.get_data);

        gsonUtil = new GsonUtil();
        handler = new Handler() {
            @Override
            public void handleMessage(Message msg) {
                super.handleMessage(msg);
                txt.setText(tvInfo.toString());
            }
        };
        getData.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                new Thread() {
                    @Override
                    public void run() {
                        super.run();
                        String data = gsonUtil.getData("http://gc.ditu.aliyun.com/geocoding?a=%E8%8B%8F%E5%B7%9E%E5%B8%82");//加载的Json数据网址
                        tvInfo = gsonUtil.parseJsonWithGson(data, TvInfo.class);
                        handler.sendEmptyMessage(0x123);//线程中不能直接对UI进行设计所以用Handler解决
                        Log.i("msg", "run: " + tvInfo.getLon());

                    }
                }.start();

            }
        });

    }
}
时间: 2024-10-17 15:55:03

android 解析数据之Gson的相关文章

一起来开发Android的天气软件(四)——使用Gson解析数据

离上一篇文章过去才4.5天,我们赶紧趁热打铁继续完毕该系列的天气软件的开发. 承接上一章的内容使用Volley实现网络的通信.返回给我们的是这一串Json数据{"weatherinfo":{"city":"杭州","cityid":"101210101","temp1":"1℃","temp2":"10℃","weat

Android网络之数据解析----使用Google Gson解析Json数据

[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4063452.html 联系方式:[email protected] [正文] 文章回顾: Android网络之数据解析----SAX方式解析XML数据 一.Json数据的介绍                                                             

Android 解析JSON格式数据

比起XML,JSON主要优势在于它的体积更小,在网络上传输的时候可以更省流量.但缺点在于,它的语义性较差,显示不如XML直观. JSON格式 :  { "name_A" : "value_A","name_B" : "value_B" } 表示:name_A = value_A;  name_B = value_B; 我将对下面的JSON数据进行解析: [{"id":"5","

(转载)Android之三种网络请求解析数据(最佳案例)

[置顶] Android之三种网络请求解析数据(最佳案例) 2016-07-25 18:02 4725人阅读 评论(0) 收藏 举报  分类: Gson.Gson解析(1)  版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 小武:相信大家都用过网络请求解析数据,只是方法不一样而已,但是,逻辑都是差不多的: 一:AsyncTask解析数据 AsyncTask主要用来更新UI线程,比较耗时的操作可以在AsyncTask中使用. AsyncTask是个抽象类,使用时需要继承这个

Android解析HTML网页数据 第一个方法Jsoup(一)

最近发现一些无聊的东西,就是抓取网页上的数据,然后使用安卓原生代码显示出来,或者说借用网页数据,用自定义的View显示. 借助jsoup-1.10.2.jar库,获取并解析数据.(Jsoup百度云下载地址:http://pan.baidu.com/s/1nvSFKyl) jsoup官方文档:https://jsoup.org/cookbook/ 中文文档:http://www.open-open.com/jsoup/ 应用场景: 我需要获取博客园网页上的数据,如图中标记的文字标题,链接,文本简介

Android解析HTML网页数据 第一个方法dom4j(二)

抓取网页上的数据,然后使用安卓原生代码显示出来,或者说借用网页数据,用自定义的View显示. 这一次使用dom4j-1.6.1.jar库,获取并解析数据.(dom4j百度云下载地址:http://pan.baidu.com/s/1jHHa6O2) 这里是使用dom4j解析字符串(html格式): try { Document doc = DocumentHelper.parseText(json); Log.e("jeter", doc.toString()); } catch (Do

Json解析数据

Json数据解析(重点网址推荐:www.json.org   code.google.com/   https://www.json.com/) 1:什么是Json? 2:Json数据格式的特点? 3:使用Gson解析Json数据 (1)Json:Javascript Object Notation; JSON is a light-weight text-based open standard designed for human-readable data. It is the most w

Android解析Json速度最快的库:json-smart

场景描写叙述: 本文仅验证了在安卓环境下使用Json的Key作为反序列化条件的解析速度.结论是解析速度最快的不是阿里的fastjson,也不是Google的Gson,而是json-smart. Android 4.4.2 fastjson-1.1.34.android.jar gson-2.2.4.jar json-smart-2.0-RC3.jar **注意场景的限定条件** 核心代码: package com.h3c.mytestview; import java.io.StringRead

android解析XML总结-SAX、Pull、Dom三种方式

在android开发中,经常用到去解析xml文件,常见的解析xml的方式有一下三种:SAX.Pull.Dom解析方式.最近做了一个android版的CSDN阅读器,用到了其中的两种(sax,pull),今天对android解析xml的这三种方式进行一次总结. xml示例(channels.xml)如下: <?xml version="1.0" encoding="utf-8"?> <channel> <item id="0&q