1. 程式人生 > >Gson 解析 json中 value為陣列

Gson 解析 json中 value為陣列

1 本文的json資料格式:

{
  "hotcolumns":[
	{
	  "client": "mobile",
	  "cname": "看東西",
	  "ename": "ldax",
	  "hot": true,
	},
	{
	  "client": "mobile",
	  "cname": "仁說",
	  "ename": "sda,
	  "hot": true,
	}
  ]
}

2 生成的model(JavaBean)


import java.util.List;


public class JsonBean {

    public List<Hotcolumns> hotcolumns;

    public List<Hotcolumns> getHotcolumns() {
        return hotcolumns;
    }

    public void setHotcolumns(List<Hotcolumns> hotcolumns) {
        this.hotcolumns = hotcolumns;
    }

   
/*
   "client": "mobile",
		"cname": "看東西",
		"ename": "ldx",
		"hot": true,
		
    */

    public static class Hotcolumns {

        public String client;
        public String cname;
        public String ename;
        public String hot;
        

       
        public String getClient() {
            return client;
        }

        public void setClient(String client) {
            this.client = client;
        }

        public String getCname() {
            return cname;
        }

        public void setCname(String cname) {
            this.cname = cname;
        }

        public String getEname() {
            return ename;
        }

        public void setEname(String ename) {
            this.ename = ename;
        }

        public String getHot() {
            return hot;
        }

        public void setHot(String hot) {
            this.hot = hot;
        }

        
    }


}

3 呼叫

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        String json =readLocalJson(this);  //讀取資料 實際專案中一般載入網路資料:需非同步請求網路
        json=json.replace("\t","");
        Gson gson = new Gson();
        java.lang.reflect.Type type = new TypeToken<JsonBean>() {}.getType();
        JsonBean jsonBean = gson.fromJson(json, type); //JsonBean.class

    }
    public static String readLocalJson(Context context){//這裡測試程式 放在本地
        String jsonString="";
        String resultString="";

        try {
            InputStream inputStream = context.getResources().openRawResource(R.raw.test);
            BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(inputStream));
            while ((jsonString=bufferedReader.readLine())!=null) {
                resultString+=jsonString;
            }
        } catch (Exception e) {
            // TODO: handle exception
        }
        return resultString;
    }


}
ps:android studio中 GSon庫匯入比較簡單:build.gradle中新增依賴: dependencies { compile 'com.google.code.gson:gson:2.2.4'}

若為簡單的型別 可使用: gson.from(json JsonBean.class)

若為複雜的型別 :  使用反射

本文兩者皆可。


相關推薦

Gson 解析 json value陣列

1 本文的json資料格式: { "hotcolumns":[ { "client": "mobile", "cname": "看東西", "ename": "ldax", "hot": true, }, { "client": "

使用gson解析json後怎麼把陣列放到listview

json資料是這個: {"total":100,"rows":[{"key":"key1","value":"value1"},{"key":"key2","value":"value2"}]} 結構是這樣的 public class A {  public int to

Gson解析JSON動態未知欄位key的方法

       前面一篇文章我介紹了Gson的解析的基本方法。但我們在享受Gson解析的高度封裝帶來的便利時,有時可能會遇到一些特殊情況,比如json資料中的欄位key是動態可變的時候,由於Gson是

簡單使用Gson解析SDcardJson檔案

File file = new File(Environment.getExternalStorageDirectory(),"news.json"); try { FileInputStream fileInputStream = new FileInputStream(file

android Gson解析JSON資料動態未知欄位key的方法

有時在解析json資料中的欄位key是動態可變的時候,由於Gson是使用靜態註解的方式來設定實體物件的,因此我們很難直接對返回的型別來判斷。但Gson在解析過程中如果不知道解析的欄位,就會將所有變數儲存在一個Map中,我們只要例項化這個map就能動態地取出key和value了。先給出一段js

Android-Gson解析JSON資料(JSON物件/JSON陣列

上一篇部落格,Android-解析JSON資料(JSON物件/JSON陣列),介紹了使用 org.json.JSONArray;/org.json.JSONObject; 來解析JSON資料;   Google Android 還提供來另外一種方式來解析JSON資料,那就是Gson;

JS解析json資料(如何將json字串轉化陣列

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE> New Document </TITLE>

android開發之 Gson 解析json陣列

為了紀念兩天解決的一個問題。 剛剛接觸到android的volley 框架,使用jsonarrayrequest的時候,得到jsonarray 問高手說可以用Gson 來解析於是開始了兩天的鑽研之路。 首先我的資料是這樣的 然後,你需要自己寫一個類,對應後臺資料的一個

Android使用GSON解析JSON資料——以解析本省市區三級資料

一、認識一下JSON JSON的語法規則: 資料在名稱/值對中 資料由逗號分隔 物件在大括號中{} 陣列在中括號內[] 由此可以看出,JSON主要是由資料、物件和陣列組成的文字。他們之間的關係大概就是 物件由多個數據(名稱/值對)組成 物件可以包含陣列 陣列可

Android使用Gson解析JSON資料

在Android中可以使用Gson解析JSON資料 首先,從 code.google.com/p/google-gson/downloads/list下載GsonAPI: google-gson-1.7.1-release.zip 把gson-1.7.jar c

Gson解析JSON資料動態未知欄位key的方法

有時在解析json資料中的欄位key是動態可變的時候,由於Gson是使用靜態註解的方式來設定實體物件的,因此我們很難直接對返回的型別來判斷。但Gson在解析過程中如果不知道解析的欄位,就會將所有變數儲存在一個Map中,我們只要例項化這個map就能動態地取出key

使用gson解析json陣列

json陣列: [ { "address": "中國", "age": 30, "name": "小明", "sex": "bo

Gson解析json陣列

package test; import java.lang.reflect.Type; import java.util.LinkedList; import java.util.List; import com.google.gson.Gson;

Gson的使用——Gson解析json陣列並展示在ListView控制元件上

類似於解析json資料的框架有很多,常用的就是Gson,使用起來特別的方便,同時,還擁有很好的可操作性,今天就來說說怎麼用Gson去解析一個json陣列。使用Gson之前,需要下載一個gson.jar的jar包。具體的自己去網上下載,有很多。 首先看看資料來源

解析Gson解析json遇到”一”:“二”類似字串key,value,如何編寫實體類

{"測A00007":["離線","離線"],"測A00006":["離線","離線"],} 如上, 實體類: public class AAA { public HashMap<String,LinkedList<HashMap<String,Str

php使用json_decode解析json字串返回Null

1.0 如下為錯誤的json格式,json標準中規定正確的json格式為json的key必須為雙引號。因此以下字串不是json字串。 在用json_decode解析時回返回null.  //在php中出現使用json_decode解析json字串失敗,返回為null; $a

Gson解析json

down googl -s span info 解析 實例 pack targe 以下是我依據Gson對json做的一些解析案例,如今我來說說Gson是如何進行Json解析的。 新建一個project: WeatherDemo,導入Gson包。Gson庫導入完畢之後就開

Android Gson解析json工具類封裝

pac spa google lis object sonar andro on() div package com.springSecurity.gson; import java.util.ArrayList; import java.util.List

eval解析JSON的註意點

而不是 img red php blank undefined 字符 n) java eval解析JSON中的註意點 在JS中將JSON的字符串解析成JSON數據格式,一般有兩種方式: 1.一種為使用eval()函數。 2. 使用Function對象來進行返回解析。 使用

Gson解析json數組

ken log rom new linked listt new t getjson string String getjson = (String) msg.obj;Type listType = new TypeToken<LinkedList<bean&g