1. 程式人生 > >Gson解析使用詳解

Gson解析使用詳解



 介紹一個json解析的非常好的工具,那就是google的開源專案Gson。

    咱們這次不介紹Gson裡面的常用類了,因為常用的幾個類非常的簡單,我們直接上手開始用,看看Gson是多麼的  強大!

    當然,如果使用第三方的專案,我們肯定要匯入jar包了,百度一搜一大把哈。

    先給出測試的Model程式碼

<span style="font-size:18px;">package com.example.jsondemo;

public class Person {

	private String name;
	private int age;
	private Birthday birthday;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public Birthday getBirthday() {
		return birthday;
	}

	public void setBirthday(Birthday birthday) {
		this.birthday = birthday;
	}

	public Person() {
		super();
	}

	public Person(String name, int age, Birthday birthday) {
		super();
		this.name = name;
		this.age = age;
		this.birthday = birthday;
	}

	@Override
	public String toString() {
		return "Person [name=" + name + ", age=" + age + ", birthday="
				+ birthday + "]";
	}

}</span>

    為了讓構造的物件更加複雜,所以定義了這個類,這樣person類的屬性就不只有基本資料型別了,讓我們的測試更有代表性。

<span style="font-size:18px;">package com.example.jsondemo;

/**
 * 
 * @ClassName: com.example.jsondemo.Birthday
 * @Description: 生日類
 * @author zhaokaiqiang
 * @date 2014-11-26 上午10:29:47
 * 
 */
public class Birthday {

	private int year;
	private int month;
	private int day;

	public int getYear() {
		return year;
	}

	public void setYear(int year) {
		this.year = year;
	}

	public int getMonth() {
		return month;
	}

	public void setMonth(int month) {
		this.month = month;
	}

	public int getDay() {
		return day;
	}

	public void setDay(int day) {
		this.day = day;
	}

	public Birthday() {
		super();
	}

	public Birthday(int year, int month, int day) {
		super();
		this.year = year;
		this.month = month;
		this.day = day;
	}

	@Override
	public String toString() {
		return "Birthday [year=" + year + ", month=" + month + ", day=" + day
				+ "]";
	}

}
</span>



    1.Object與Json的相互轉換

    咱們先從最簡單的單一物件開始說。

    下面是程式碼實現

<span style="font-size:18px;">/**
	 * 單一物件的json生成與解析
	 */
	public void objectToJson() {

		Person p = new Person("zhaokaiqiang", 22, new Birthday(1992, 1, 19));
		Gson gson = new Gson();

		String jsonString = gson.toJson(p);

		Log.d(TAG, "---------單一物件生成--------");
		Log.d(TAG, jsonString);

		Person person = gson.fromJson(jsonString, Person.class);

		Log.d(TAG, "---------單一物件解析--------");
		Log.d(TAG, person.toString());

	}</span>

    這程式碼是多麼的簡潔,美觀啊!

    在上一篇的文章中,如果要生成簡單物件的話,我們還需要自己指定key,然後設定value,自從用了Gson,我們再也沒有這些煩惱了!而且為了說明Gson的強大之處,我還特意給Person設定了一個物件Birthday,如果使用自帶的json工具,那不就麻煩死了。但是使用Gson,根本不需要有這些顧慮。看下面的轉換結果,一個toJson(),完全解決問題,太棒了!

<span style="font-size:18px;">11-26 16:16:38.392: D/GsonTest(16931): ---------單一物件生成--------
11-26 16:16:38.392: D/GsonTest(16931): {"name":"zhaokaiqiang","birthday":{"day":19,"month":1,"year":1992},"age":22}
11-26 16:16:38.392: D/GsonTest(16931): ---------單一物件解析--------
11-26 16:16:38.392: D/GsonTest(16931): Person [name=zhaokaiqiang, age=22, birthday=Birthday [year=1992, month=1, day=19]]</span>

    2.集合泛型與Json的相互轉換

    Gson除了可以很方便的與單一物件進行轉換之外,還能夠與集合進行轉換。

    下面是一個生成Json,並完成解析的程式碼:

<span style="font-size:18px;">/**
	 * 集合物件的json生成與解析
	 */
	public void objectsToJson() {

		Gson gson = new Gson();
		Person person = new Person("zhaokaiqiang", 22,
				new Birthday(1992, 1, 19));
		ArrayList<Person> arrayList = new ArrayList<Person>();
		arrayList.add(person);
		arrayList.add(person);
		arrayList.add(person);

		String jsonString = gson.toJson(arrayList);

		Log.d(TAG, "---------集合物件生成--------");
		Log.d(TAG, jsonString);

		Type type = new TypeToken<ArrayList<Person>>() {
		}.getType();

		ArrayList<Person> persons = gson.fromJson(jsonString, type);

		Log.d(TAG, "---------集合物件解析--------");
		Log.d(TAG, persons.toString());
	}</span>

    這是轉換出來的結果
<span style="font-size:18px;">---------集合物件生成--------
[{"name":"zhaokaiqiang","birthday":{"day":19,"month":1,"year":1992},"age":22},{"name":"zhaokaiqiang","birthday":{"day":19,"month":1,"year":1992},"age":22},{"name":"zhaokaiqiang","birthday":{"day":19,"month":1,"year":1992},"age":22}]
 ---------集合物件解析--------
 [Person [name=zhaokaiqiang, age=22, birthday=Birthday [year=1992, month=1, day=19]], Person [name=zhaokaiqiang, age=22, birthday=Birthday [year=1992, month=1, day=19]], Person [name=zhaokaiqiang, age=22, birthday=Birthday [year=1992, month=1, day=19]]]
</span>

    如果我們想使用json完成類似的功能,複雜度是不可想象的,但是使用Gson來實現的話,卻是如此簡單。

    在使用Gson.toJson()方法的時候,我們可以把任何物件或者是集合放進去,就可以完美的轉換成json格式。

    如果想把json格式的資料轉換成我們想要的物件,我們只需要呼叫Gson.fromJson()即可。

    但是在轉換的時候,第二個引數有兩種形式,一種是Class<?>,這個是轉換單一物件的時候,我們需要把物件.class傳遞進去,告訴轉換器要轉換的型別。如果我們需要轉換的是集合型別,我們需要傳遞一個實現了Type介面的例項,具體語法就和上面的程式碼一樣,只要把你用的集合型別還有具體的物件換一下就可以了。

------------------------------------------------------------分割線------------------------------------------------------------------

以上的內容是最簡單的Gson的用法,我們基本上只使用到了Gson這一個類,對於基本需求來說沒問題,

但是,如果想要建立和解析複雜的Json資料,就有點不夠了。為了說明如何使用Gson解析更加複雜的資料,

特新增以下內容,即Gson的更高階用法

------------------------------------------------------------分割線--------------------------------------------------------------------

3.複雜json資料結構的構建與解析

    我們首先看看如何構建複雜的Json資料。

    上一篇文章中,我們已經知道Json資料有兩種形式,Object形式(其實就是鍵值對形式),Array形式(即陣列形式),我們以Object形式為例,介紹構建複雜Json。

    在開始構造之前,我們需要先介紹幾個常用物件。

    Gson:這個類在前面已經用過了,是我們完成json轉換和解析的主要類,主要使用toJson()和fromJson()這兩個方法。

    JsonObject:這個是我們構建Object形式的Json資料的主要類,我們可以設定key和value。

    JsonElement:這個是Json元素類,它裡面可以是一個JsonObject、JsonArray、JsonNull或者是一個JsonPrimitive。注意,它裡面的資料只能看作是一個元素。

    JsonArray:這個是我們想構造Array形式的主要類,我們可以往數組裡面新增資料,資料是有序的。

    JsonParser:這個是Json的解析器,主要作用是把一個Json形式的字串轉換成一個JsonElement物件。

    介紹完這些常用物件之後,我們下面看一下程式碼實現吧。

<span style="font-size:18px;">public String getJsonString() {
		Person p = new Person("zhaokaiqiang", 22, new Birthday(1992, 1, 19));
		JsonElement jsonElement = new JsonParser().parse(new Gson().toJson(p));
		
		JsonObject jsonObject = new JsonObject();
		jsonObject.addProperty("name", "zhao");
		jsonObject.addProperty("age", 22);
		jsonObject.add("person", jsonElement);
		Log.d(TAG, "getJsonString------" + jsonObject.toString());
		return jsonObject.toString();
	}</span>
    在上面的方法中,我們使用JsonParser和Gson只是為了獲取一個JsonElement物件,因為使用JsonObject構造Object形式的Json資料的時候,基本資料型別可以使用addProperty()方法直接新增進去,但是如果想新增類的話,必須包裝成一個JsonElement物件之後才能夠新增,所以先用Gson的toJson()轉換成一個Json格式的資料,然後使用JsonParser轉換成一個JsonElement,使用add()新增進去之後,直接JsonObject.toString()就可以獲取到複雜物件的Json格式資料了。

    下面是輸出的結果,沒有任何問題。

<span style="font-size:18px;">getJsonString------{"name":"zhao","age":22,"person":{"name":"zhaokaiqiang","birthday":{"day":19,"month":1,"year":1992},"age":22}}</span>


    知道了如何使用上面的這些類實現Json資料構建之後,下面我們講解一下如何解析上面的這種複雜的json資料。

    我們先看程式碼吧

<span style="font-size:18px;">public void fromJsonString() {

		Gson gson = new Gson();
		JsonElement jsonElement = new JsonParser().parse(getJsonString());
		
		JsonObject jsonObject = jsonElement.getAsJsonObject();

		JsonElement personElement = jsonObject.get("person");
		Person person = gson.fromJson(personElement, Person.class);

		JsonElement nameElement = jsonObject.get("name");
		String name = nameElement.getAsString();

		JsonElement ageElement = jsonObject.get("age");
		int age = ageElement.getAsInt();

		Log.d(TAG, "person-----" + person);
		Log.d(TAG, "name-----" + name);
		Log.d(TAG, "age-----" + age);

	}</span>

    如果我們要進行解析,我們必須獲取到JsonElement物件,然後轉換成JsonObject物件之後才能繼續處理,所以在程式碼中進行了這樣的處理。因為JsonElement是我們處理的基本元素,所以在獲取到JsonObject之後,我們還需要根據key獲取到對應value的JsonElement物件,然後根據不同的型別進行不同的轉換即可。

    知道了這些之後,完成80%的業務需求應該沒問題了。

介紹一個json解析的非常好的工具,那就是google的開源專案Gson。

    咱們這次不介紹Gson裡面的常用類了,因為常用的幾個類非常的簡單,我們直接上手開始用,看看Gson是多麼的強大!

    當然,如果使用第三方的專案,我們肯定要匯入jar包了,百度一搜一大把哈。

    先給出測試的Model程式碼

<span style="font-size:18px;">package com.example.jsondemo;

public class Person {

	private String name;
	private int age;
	private Birthday birthday;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public Birthday getBirthday() {
		return birthday;
	}

	public void setBirthday(Birthday birthday) {
		this.birthday = birthday;
	}

	public Person() {
		super();
	}

	public Person(String name, int age, Birthday birthday) {
		super();
		this.name = name;
		this.age = age;
		this.birthday = birthday;
	}

	@Override
	public String toString() {
		return "Person [name=" + name + ", age=" + age + ", birthday="
				+ birthday + "]";
	}

}</span>

    為了讓構造的物件更加複雜,所以定義了這個類,這樣person類的屬性就不只有基本資料型別了,讓我們的測試更有代表性。

<span style="font-size:18px;">package com.example.jsondemo;

/**
 * 
 * @ClassName: com.example.jsondemo.Birthday
 * @Description: 生日類
 * @author zhaokaiqiang
 * @date 2014-11-26 上午10:29:47
 * 
 */
public class Birthday {

	private int year;
	private int month;
	private int day;

	public int getYear() {
		return year;
	}

	public void setYear(int year) {
		this.year = year;
	}

	public int getMonth() {
		return month;
	}

	public void setMonth(int month) {
		this.month = month;
	}

	public int getDay() {
		return day;
	}

	public void setDay(int day) {
		this.day = day;
	}

	public Birthday() {
		super();
	}

	public Birthday(int year, int month, int day) {
		super();
		this.year = year;
		this.month = month;
		this.day = day;
	}

	@Override
	public String toString() {
		return "Birthday [year=" + year + ", month=" + month + ", day=" + day
				+ "]";
	}

}
</span>



    1.Object與Json的相互轉換

    咱們先從最簡單的單一物件開始說。

    下面是程式碼實現

<span style="font-size:18px;">/**
	 * 單一物件的json生成與解析
	 */
	public void objectToJson() {

		Person p = new Person("zhaokaiqiang", 22, new Birthday(1992, 1, 19));
		Gson gson = new Gson();

		String jsonString = gson.toJson(p);

		Log.d(TAG, "---------單一物件生成--------");
		Log.d(TAG, jsonString);

		Person person = gson.fromJson(jsonString, Person.class);

		Log.d(TAG, "---------單一物件解析--------");
		Log.d(TAG, person.toString());

	}</span>

    這程式碼是多麼的簡潔,美觀啊!

    在上一篇的文章中,如果要生成簡單物件的話,我們還需要自己指定key,然後設定value,自從用了Gson,我們再也沒有這些煩惱了!而且為了說明Gson的強大之處,我還特意給Person設定了一個物件Birthday,如果使用自帶的json工具,那不就麻煩死了。但是使用Gson,根本不需要有這些顧慮。看下面的轉換結果,一個toJson(),完全解決問題,太棒了!

<span style="font-size:18px;">11-26 16:16:38.392: D/GsonTest(16931): ---------單一物件生成--------
11-26 16:16:38.392: D/GsonTest(16931): {"name":"zhaokaiqiang","birthday":{"day":19,"month":1,"year":1992},"age":22}
11-26 16:16:38.392: D/GsonTest(16931): ---------單一物件解析--------
11-26 16:16:38.392: D/GsonTest(16931): Person [name=zhaokaiqiang, age=22, birthday=Birthday [year=1992, month=1, day=19]]</span>

    2.集合泛型與Json的相互轉換

    Gson除了可以很方便的與單一物件進行轉換之外,還能夠與集合進行轉換。

    下面是一個生成Json,並完成解析的程式碼:

<span style="font-size:18px;">/**
	 * 集合物件的json生成與解析
	 */
	public void objectsToJson() {

		Gson gson = new Gson();
		Person person = new Person("zhaokaiqiang", 22,
				new Birthday(1992, 1, 19));
		ArrayList<Person> arrayList = new ArrayList<Person>();
		arrayList.add(person);
		arrayList.add(person);
		arrayList.add(person);

		String jsonString = gson.toJson(arrayList);

		Log.d(TAG, "---------集合物件生成--------");
		Log.d(TAG, jsonString);

		Type type = new TypeToken<ArrayList<Person>>() {
		}.getType();

		ArrayList<Person> persons = gson.fromJson(jsonString, type);

		Log.d(TAG, "---------集合物件解析--------");
		Log.d(TAG, persons.toString());
	}</span>

    這是轉換出來的結果
<span style="font-size:18px;">---------集合物件生成--------
[{"name":"zhaokaiqiang","birthday":{"day":19,"month":1,"year":1992},"age":22},{"name":"zhaokaiqiang","birthday":{"day":19,"month":1,"year":1992},"age":22},{"name":"zhaokaiqiang","birthday":{"day":19,"month":1,"year":1992},"age":22}]
 ---------集合物件解析--------
 [Person [name=zhaokaiqiang, age=22, birthday=Birthday [year=1992, month=1, day=19]], Person [name=zhaokaiqiang, age=22, birthday=Birthday [year=1992, month=1, day=19]], Person [name=zhaokaiqiang, age=22, birthday=Birthday [year=1992, month=1, day=19]]]
</span>

    如果我們想使用json完成類似的功能,複雜度是不可想象的,但是使用Gson來實現的話,卻是如此簡單。

    在使用Gson.toJson()方法的時候,我們可以把任何物件或者是集合放進去,就可以完美的轉換成json格式。

    如果想把json格式的資料轉換成我們想要的物件,我們只需要呼叫Gson.fromJson()即可。

    但是在轉換的時候,第二個引數有兩種形式,一種是Class<?>,這個是轉換單一物件的時候,我們需要把物件.class傳遞進去,告訴轉換器要轉換的型別。如果我們需要轉換的是集合型別,我們需要傳遞一個實現了Type介面的例項,具體語法就和上面的程式碼一樣,只要把你用的集合型別還有具體的物件換一下就可以了。

------------------------------------------------------------分割線------------------------------------------------------------------

以上的內容是最簡單的Gson的用法,我們基本上只使用到了Gson這一個類,對於基本需求來說沒問題,

但是,如果想要建立和解析複雜的Json資料,就有點不夠了。為了說明如何使用Gson解析更加複雜的資料,

特新增以下內容,即Gson的更高階用法

------------------------------------------------------------分割線--------------------------------------------------------------------

3.複雜json資料結構的構建與解析

    我們首先看看如何構建複雜的Json資料。

    上一篇文章中,我們已經知道Json資料有兩種形式,Object形式(其實就是鍵值對形式),Array形式(即陣列形式),我們以Object形式為例,介紹構建複雜Json。

    在開始構造之前,我們需要先介紹幾個常用物件。

    Gson:這個類在前面已經用過了,是我們完成json轉換和解析的主要類,主要使用toJson()和fromJson()這兩個方法。

    JsonObject:這個是我們構建Object形式的Json資料的主要類,我們可以設定key和value。

    JsonElement:這個是Json元素類,它裡面可以是一個JsonObject、JsonArray、JsonNull或者是一個JsonPrimitive。注意,它裡面的資料只能看作是一個元素。

    JsonArray:這個是我們想構造Array形式的主要類,我們可以往數組裡面新增資料,資料是有序的。

    JsonParser:這個是Json的解析器,主要作用是把一個Json形式的字串轉換成一個JsonElement物件。

    介紹完這些常用物件之後,我們下面看一下程式碼實現吧。

<span style="font-size:18px;">public String getJsonString() {
		Person p = new Person("zhaokaiqiang", 22, new Birthday(1992, 1, 19));
		JsonElement jsonElement = new JsonParser().parse(new Gson().toJson(p));
		
		JsonObject jsonObject = new JsonObject();
		jsonObject.addProperty("name", "zhao");
		jsonObject.addProperty("age", 22);
		jsonObject.add("person", jsonElement);
		Log.d(TAG, "getJsonString------" + jsonObject.toString());
		return jsonObject.toString();
	}</span>
    在上面的方法中,我們使用JsonParser和Gson只是為了獲取一個JsonElement物件,因為使用JsonObject構造Object形式的Json資料的時候,基本資料型別可以使用addProperty()方法直接新增進去,但是如果想新增類的話,必須包裝成一個JsonElement物件之後才能夠新增,所以先用Gson的toJson()轉換成一個Json格式的資料,然後使用JsonParser轉換成一個JsonElement,使用add()新增進去之後,直接JsonObject.toString()就可以獲取到複雜物件的Json格式資料了。

    下面是輸出的結果,沒有任何問題。

<span style="font-size:18px;">getJsonString------{"name":"zhao","age":22,"person":{"name":"zhaokaiqiang","birthday":{"day":19,"month":1,"year":1992},"age":22}}</span>


    知道了如何使用上面的這些類實現Json資料構建之後,下面我們講解一下如何解析上面的這種複雜的json資料。

    我們先看程式碼吧

<span style="font-size:18px;">public void fromJsonString() {

		Gson gson = new Gson();
		JsonElement jsonElement = new JsonParser().parse(getJsonString());
		
		JsonObject jsonObject = jsonElement.getAsJsonObject();

		JsonElement personElement = jsonObject.get("person");
		Person person = gson.fromJson(personElement, Person.class);

		JsonElement nameElement = jsonObject.get("name");
		String name = nameElement.getAsString();

		JsonElement ageElement = jsonObject.get("age");
		int age = ageElement.getAsInt();

		Log.d(TAG, "person-----" + person);
		Log.d(TAG, "name-----" + name);
		Log.d(TAG, "age-----" + age);

	}</span>

    如果我們要進行解析,我們必須獲取到JsonElement物件,然後轉換成JsonObject物件之後才能繼續處理,所以在程式碼中進行了這樣的處理。因為JsonElement是我們處理的基本元素,所以在獲取到JsonObject之後,我們還需要根據key獲取到對應value的JsonElement物件,然後根據不同的型別進行不同的轉換即可。

    知道了這些之後,完成80%的業務需求應該沒問題了。

相關推薦

javascript預解析

ole 標簽 scrip defined cti con body his 字符串 1、定義 預解析:在當前作用域下,js運行之前,會把帶有var和function關鍵字聲明的變量先聲明,並在內存中安排好。然後從上至下解析js語句。而且function的聲明優先於var聲明

Google Gson 使用

Gson Summary      Java 解析 Json 最常用的類庫有:google 的 Gson、阿里巴巴的 FastJson、以及 Jackson。這些都是非常優秀而且常用的庫。   &nbs

IA-32指令解析

IA-32指令解析詳解 0x00 前言  這段時間忙於考試,資訊理論和最優化,還有演算法分析,有點讓人頭大。期間花了幾天看SEH機制,能明白個大概,但是對於VC++對於SHE的包裝似乎還是不是很明白,發現逆向工程核心原理對於這段寫的太簡單,至於加密與解密則是模稜兩可,軟體加密技術內幕倒是詳解了,

linux 搭建DNS 正向解析、反向解析、區域傳送、批量解析

DNS 一、 概念 Domain Name Server 域名解析服務 1.1域名與主機名 例如 對於www.baidu.com www.google.com 域名(domain name)為www.google 主機名為.google.com .baidu.com www.ksu.edu.

android json解析(json手動解析

一 .json簡介 1)概念:json全稱是javaScript object Notation,是一種病輕量級的資料交換格式。 2)特點: 1.本質就是具有特定格式的字串 2,.json完全獨立於程式語言 3.json比xml資料傳輸的有效性要高出很多 二。json資料

js小數相加、相乘失去精度問題解析(最優方案)

var CMX = CMX || {}; /** ** 加 **/ CMX.add = function (arg1, arg2) { var r1, r2, m, c; try { r1 = arg1.toString().split(".")[1].length; } catc

Android開發之JSON資料解析(二)

在上一篇我們講解了Android開發JSON的基本介紹以及JSON的資料結構等, 今天我們來講解一下JSON的工作原理以及基本用法: JSON解析分為兩種情況,一種是在伺服器端解析,另一種是在客戶端解析 第一種:在伺服器段解析:    通常,客戶端在請求伺服器資料時,伺服器

Qt中的Jason解析

JSON(JavaScript Object Notation) 是一種輕量級的資料交換格式。它比XML還小巧。 JSON採用完全獨立於語言的文字格式,但是也使用了類似於C語言家族的習慣(包括C、C++、C#、Java、JavaScript等)。這些特性使JSON成為理想

JAVA 與 MyCat(4) XML解析

通過mycat來學習java了^^。 前一篇講到了load方法: private void load(String dtdFile, String xmlFile) { InputStream dtd = null; InputStream xml =

Java Excel匯入及資料解析

批量更新:<select class="default_input" id="plgx_id"> <option value="s0">批量更新</option> <option value="s1">狀態</op

android Json解析(詳細程式碼)

廣告時間:張大媽  好看美劇  妹子圖  JSON的定義:        一種輕量級的資料交換格式,具有良好的可讀和便於快速編寫的特性。業內主流技術為其提供了完整的解決方案(有點類似於正則表示式 ,獲得了當今大部分語言的支援),從而可以在不同平臺間進行資料交換。JSON採

Python筆記01:sort min/max map/filter/reduce 列表解析

1、sorted(iterable[, cmp[, key[, reverse]]]) cmp:用於對比函式用於比較迭代物件中的元素的大小。我們在這裡暫且不討論sort函式用的是哪種排序(其實sort還是挺智慧的,會根據不同的資料選擇合適的排序演算法),在排序過程中都需要對

Mybatis原始碼解析 —— Sql解析

引言 Mybatis框架極大地簡化了ORM,讓使用者自定義sql語句,再將查詢結果對映到Java類中,其中很關鍵的一部分就是,將使用者寫的sql語句(以xml或者註解形式)解析成資料庫可執行的sql語句。 本文將會介紹這整個的解析過程。

動態域名解析

隨著個人使用者寬頻上網的普及,越來越多的網民開始在自己的電腦上架設伺服器和主頁空間,這個完全屬於自己的網路個人家園將沒有免費主頁中的廣告騷擾,沒有虛擬主機的空間和功能限制,也無須支付主機託管的高昂費用。不過目前個人架站所需要解決的關鍵問題不在於安裝配置和管理主機伺服器,而是作為電信ISP提供給一般使用者的個人

nginx學習三 nginx配置項解析及程式碼實現

nginx配置項解析詳解及程式碼實現 0回顧  在上一節,用nginx簡單實現了一個hello world程式:當我們在瀏覽器中輸入lochost/hello ,瀏覽器就返回:hello world。為什麼會這樣呢,簡單一點說就是當我們請求訪問hello這個服務,ngi

yaml檔案解析

前言 yaml檔案是什麼?yaml檔案其實也是一種配置檔案型別,相比較ini,conf配置檔案來說,更加的簡潔,操作也更加簡單,同時可以存放不同型別的資料,不會改變原有資料型別,所有的資料型別在讀取時都會原樣輸出,yaml檔案依賴python的第三方庫PyYaml模組 PyYaml安裝 yaml檔案處理

python argparse:命令列引數解析

## 簡介 本文介紹的是***[argparse](https://docs.python.org/3/library/argparse.html)***模組的基本使用方法,尤其詳細介紹**add_argument**內建方法各個引數的使用及其效果。 本文翻譯自[argparse的官方說明](ht

Android 使用Gson解析json案例

一、目前解析json有三種工具:org.json(Java常用的解析),fastjson(阿里巴巴工程師開發的),Gson(Google官網出的),解析速度最快的是Gson,下載地址:https://code.google.com/p/google-gson/

Gson解析使用

 介紹一個json解析的非常好的工具,那就是google的開源專案Gson。     咱們這次不介紹Gson裡面的常用類了,因為常用的幾個類非常的簡單,我們直接上手開始用,看看Gson是多麼的  強大!     當然,如果使用第三方的專案,我們肯定要匯入jar包了,百

Gson的反射解析機制(2)

在上一篇部落格中籠統的介紹了Gson中解析json的整體流程,但是具體細節並沒有說明,本篇就簡單的梳理一下: 1)怎麼利用反射來建立自定義的JavaBean? 2)怎麼給JavaBen的變數類來賦值? 3)集合類物件怎麼建立? 通過閱讀Gson原始碼可得