Android中使用Gson解析稍復(fù)雜的JSON數(shù)據(jù)

一、Json簡介

JSON官網(wǎng)(中文版):http://www.json.org/json-zh.html

JSON(JavaScript Object Notation)是一種輕量級(輕量級?簡單、易操作、快捷)的數(shù)據(jù)交換格式。主要目的就是給出一套通用的數(shù)據(jù)格式,大家按照這種格式定義自己的數(shù)據(jù),方便數(shù)據(jù)的交換。特點是(相對來說)易于人閱讀和編寫,易于機(jī)器解析和生成。

Rules:

1.“名稱/值”對的集合(A collection of name/value pairs)。不同的語言中,它被理解為對象(object),紀(jì)錄(record),結(jié)構(gòu)(struct),字典(dictionary),哈希表(hash table),有鍵列表(keyed list),或者關(guān)聯(lián)數(shù)組 (associative array)。

2.值的有序列表(An ordered list of values)。在大部分語言中,它被理解為數(shù)組(array)。

JSON可以有以下格式:

1.對象是一個無序的“ ‘名稱/值’ 對”集合。一個對象以“{”(左括號)開始,“}”(右括號)結(jié)束。每個“名稱”后跟一個“:”(冒號);“‘名稱/值’ 對”之間使用“,”(逗號)分隔。

object的 ?名稱 /值 ?結(jié)構(gòu)

2.數(shù)組是值(value)的有序集合。一個數(shù)組以“[”(左中括號)開始,“]”(右中括號)結(jié)束。值之間使用“,”(逗號)分隔。

?“值的類型”可以是哪些數(shù)據(jù)類型

以上是最基本的json知識,想深入了解的,請移步官網(wǎng)

下面舉個栗子給大家嘗嘗:

{

"type":"forecast1d",

"weatherinfo": [

{

"city": "北京",

"cityid": "1",

"temp1": "22℃",

"temp2": "10℃",

"weather": "晴",

"ptime": "11:00"

},

{

"city": "上海",

"cityid": "2",

"temp1": "24℃",

"temp2": "12℃",

"weather": "晴",

"ptime": "11:00"

}

]

}

栗子好難看,上截圖(截圖太小看不清...戳這里看大圖<-- !):

?一個簡單的JSON串

NOTE:左側(cè)為JSON字符串,右側(cè)為解析結(jié)構(gòu),方便查看。

福利:截圖是我在一個在線JSON Editor上截的,體驗一下-->JSON Editor,很好用推薦給大家。

二、使用Gson在Android中解析Json

認(rèn)清了JSON,就要解析它。

你可以使用的JSON庫:

JSONObject(源自Android官方)、

GSon(源自Google)、

Jackson(第三方開源庫)、

FastJSON(第三方開源庫)、

等。。。

本篇文章使用Gson解析JSON,Gson地址:http://code.google.com/p/google-gson/

google-gson?

無法下載?百度云分享一下http://pan.baidu.com/s/1kTur5xd,提取密碼:5oae

根據(jù)JSON串的結(jié)構(gòu)定義一個類(這里我們把這個類叫Result),我們直接把得到的JSON串解析成這個類。class Result定義如下:


import java.util.List;


public class Result {

public String type;

public List

weatherinfo;

public static class Info {

public String city;

public String cityid;

public String temp1;

public String temp2;

public String weather;

public String ptime;

}

}

class Result

定義好了待解析成的class之后,接下來使用Gson解析JSON串就可以了:

Gson gson = new Gson();

Result r = gson.fromJson(jsonData, Result.class);

So easy!

難點:1.如何定義這個待解析成的類?其實很簡單,看到JSON結(jié)構(gòu)里面有{ }你就定義一個類,看到[ ]你就定義一個List即可,最后只剩下最簡單的如String、int等基本類型直接定義就好。2.內(nèi)部嵌套的類,請使用public static class className { }。3.類內(nèi)部的屬性名,必須與JSON串里面的Key名稱保持一致。這三點請自行對照我們上面舉的Result的栗子,都有對應(yīng)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,534評論 19 139
  • 1.概述2.Gson的目標(biāo)3.Gson的性能和擴(kuò)展性4.Gson的使用者5.如何使用Gson 通過Maven來使用...
    人失格閱讀 14,547評論 2 18
  • 轉(zhuǎn)載:http://www.itdecent.cn/p/b87fee2f7a23 前言 今天,我們來介紹現(xiàn)今主流的...
    朝花夕拾不起來閱讀 3,373評論 2 27
  • 比起 XML,JSON 的主要優(yōu)勢在于它的體積更小,在網(wǎng)絡(luò)上傳輸?shù)臅r候可以更省流量。但缺點在于,它的語義性較差,看...
    TTTqiu閱讀 547評論 0 0
  • 蔓蔓媽產(chǎn)后上班的第一天,我怕奶奶頭一次單獨帶蔓蔓不適應(yīng),所以請了假,在家陪著。中午吃飯,順手打開電視,正在放《深夜...
    茶人老七閱讀 618評論 2 3

友情鏈接更多精彩內(nèi)容