android 解析数据之Gson

休言女子非英物,夜夜龙泉壁上鸣。这篇文章主要讲述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 = https://www.songbingjia.com/android/(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(); } }); } }

【android 解析数据之Gson】 

    推荐阅读