国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > JavaScript > 正文

json解析

2020-03-22 18:05:44
字體:
供稿:網(wǎng)友
  • android開發(fā)中,與服務(wù)器交互80%是通過json方式傳輸數(shù)據(jù),JSON 也是基于純文本的數(shù)據(jù)格式,JSON具有跨平臺的優(yōu)勢,相對xml,json解析起來更方便,簡單,解析數(shù)據(jù)所消耗的流量也會比xml少,而且json有一些好的第三方庫文件,已為開發(fā)者封裝好了,

    JSON語法規(guī)則:

    • 數(shù)據(jù)在名稱/值對中
    • 數(shù)據(jù)由逗號分隔
    • 花括號保存對象
    • 方括號保存數(shù)組

      JSON 名稱/值對

      JSON 數(shù)據(jù)的書寫格式是:名稱/值對

      名稱/值對組合中的名稱寫在前面(在雙引號中),值對寫在后面(同樣在雙引號中),中間用冒號隔開:比如;"firstName":"John"

      JSON 值JSON 值可以是:
      • 數(shù)字(整數(shù)或浮點(diǎn)數(shù))
      • 字符串(在雙引號中)
      • 邏輯值(true 或 false)
      • 數(shù)組(在方括號中)
      • 對象(在花括號中)
      • null

        比如值是基本類型

        {"city":"Beijing","street":"ChaoyangRoad","postcode":100025}

        {}代表是一個對象,這些都是簡單的key/html' target='_blank'>value形式,如果用對象來表示的話:

        public class Info {	public String city;	public String street;	public int postcode;}

        在這個javabean中并沒有使用get,set方法,因?yàn)間et,set方法是使用反射做的,比較慢,這是json最簡單的方式,key/value形式,我們知道json有三種種方式,一種是key/value,key/Object,key/array,現(xiàn)在講講key/Object形式

        比如:

        {"name":"Michael","address":{"city":"Beijing","street":" Chaoyang Road ","postcode":100025}} 

        這里有2個對象,一個是最外面的,一個是address:它也是一個對象,我們說了{(lán)}就代表一個對象,因此 首先寫里面的對象,然后再寫外面的對象,代碼如下:

        Info.java

        package com.example.josn;public class Info {	public String city;	public String street;	public int postcode;}

        Person.java

        /** * {"name":"Michael","address":{"city":"Beijing","street":" Chaoyang Road ","postcode":100025}}  * @author carpool * */public class Person {		public String name;		public Info info;}

        json解析代碼:

        </pre><pre class="java" name="code">String jsonString = getJsonString();		try {			JSONObject jb = new JSONObject(jsonString);			Person p = new Person();			Info info  = new Info();			info.city = jb.getJSONObject("address").getString("city");			info.street = jb.getJSONObject("address").getString("street");			info.postcode = jb.getJSONObject("address").getInt("postcode");			p.info = info;			p.name = jb.getString("name");		} catch (JSONException e) {			e.printStackTrace();		}


        現(xiàn)在還剩下一個種形式j(luò)son,就是key/array,比如:

        {    "people": [        {            "firstName": "Brett",            "lastName": "McLaughlin",            "email": "aaaa"        },        {            "firstName": "Jason",            "lastName": "Hunter",            "email": "bbbb"        },        {            "firstName": "Elliotte",            "lastName": "Harold",            "email": "cccc"        }    ]}

        我們知道{}代表的是一個對象,[]代表的是數(shù)組,表示數(shù)組中存放了很多對象,對象之間用逗號(,)分開,

        這個用對象封裝一般有二種形式,一是直接用集合把解析的對象存儲起來,二是用一個類封裝一個集合,集合的對象就是上面所解析的對象即可

        第一種方式:

        People.java

        public class People {	public String firstName;	public String lastName;	public String email;}


        解析:

        String jsonString = getJsonString();//json串		try {			JSONObject jb = new JSONObject(jsonString);			JSONArray ja = jb.getJSONArray("people");			ArrayList<People> ps = new ArrayList<People>();			for(int i=0;i<ja.length();i++){				People p = new People();				p.email = ja.getJSONObject(i).getString("email");				p.firstName = ja.getJSONObject(i).getString("firstName");				p.lastName = ja.getJSONObject(i).getString("lastName");				ps.add(p);			}		} catch (JSONException e) {			e.printStackTrace();		}


        第二種寫法:

        public class Multiplepeople {	public List<People> peoples;}

        String jsonString = getJsonString();//json串		try {			JSONObject jb = new JSONObject(jsonString);			JSONArray ja = jb.getJSONArray("people");			Multiplepeople multiplepeople = new Multiplepeople();			List<People> ps = new ArrayList<People>();  			for(int i=0;i<ja.length();i++){				People p = new People();				p.email = ja.getJSONObject(i).getString("email");				p.firstName = ja.getJSONObject(i).getString("firstName");				p.lastName = ja.getJSONObject(i).getString("lastName");				ps.add(p);			}  			multiplepeople.peoples =ps;		} catch (JSONException e) {			e.printStackTrace();		}
        json就到了,多練習(xí)就會了!

        代表的是key為address,值是個對象,

        ??

        PHP編程

        鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

  • 發(fā)表評論 共有條評論
    用戶名: 密碼:
    驗(yàn)證碼: 匿名發(fā)表
    主站蜘蛛池模板: 庆阳市| 陵川县| 新宾| 珠海市| 外汇| 龙泉市| 永川市| 石屏县| 剑川县| 嘉定区| 安乡县| 淮北市| 合川市| 潮安县| 花莲县| 辽阳市| 夹江县| 伊金霍洛旗| 景德镇市| 秀山| 南和县| 垣曲县| 上思县| 蓝山县| 靖江市| 洛南县| 舞阳县| 竹北市| 宣城市| 嘉义市| 景宁| 奇台县| 报价| 金阳县| 兴义市| 镇远县| 涿鹿县| 中方县| 丹寨县| 潞西市| 昌宁县|