[Java IO]06_JSON操作

來源:互聯網
上載者:User

標籤:

6.1 JSON 知識背景6.1.1 JSON 簡介

JSON: JavaScript Object Notation(JavaScript 對象標記法)

JSON 是儲存和交換文本資訊的文法。類似 XML。

JSON 比 XML 更小、更快,更易解析。

JSON 使用 Javascript文法來描述資料對象,但是 JSON 仍然獨立於語言和平台。JSON 解析器和 JSON 庫支援許多不同的程式設計語言。 目前非常多的動態(PHP,JSP,.NET)程式設計語言都支援JSON。

 

6.1.2 JSON 文法 JSON 文法規則
  • 資料在名稱/值對中
  • 資料由逗號分隔
  • 花括弧儲存對象
  • 方括弧儲存數組


JSON 名稱/值對

JSON 資料的書寫格式是:名稱/值對。

名稱/值對包括欄位名稱(在雙引號中),後面寫一個冒號,然後是值:

“name” : “zhangsan”

這很容易理解,等價於這條 JavaScript 語句:

Name = “zhangsan”

 

JSON 實值型別

JSON 值可以是:

  • 字串(在雙引號中)
  • 數字(整數或浮點數)
  • 對象(在花括弧中)
  • 數組(在方括弧中)
  • 邏輯值(true 或 false)
  • Null

值的資料類型圖:



6.1.3 JSON 的資料結構

JSON有兩種資料結構:對象和數組。

JSON 對象

對象是一個無序的“‘名稱/值’對”集合(A collection of name/value pairs)。不同的語言中,它被理解為對象(object),紀錄(record),結構(struct),字典(dictionary),雜湊表(hash table),有鍵列表(keyed list),或者關聯陣列 (associative array)。

一個對象以“{”(左括弧)開始,“}”(右括弧)結束。每個“名稱”後跟一個“:”(冒號);“‘名稱/值’ 對”之間使用“,”(逗號)分隔。

JSON 對象在花括弧中書寫:

{ "name":"zhangsan" , "age":24 }

這一點也容易理解,與這條 JavaScript 語句等價:

name = "zhangsan"

age = 24

參考圖如下:



JSON 數組

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

JSON 數組在方括弧中書寫:

數組可包含多個對象:

{

         "people": [

                   { "namr":"zhangsan" , "age":22 },

                   { "name":"lisi" , "age":24 },

                   { "name":"wangwu" , "age":27 }

         ]

}

在上面的例子中,對象 "employees" 是包含三個對象的數組。每個對象代表一條關於某人(有姓和名)的記錄。

參考圖如下:



6.2 Java 中操作 JSON 資料

網上有很多JAVA種操作JSON的jar包,這裡介紹一個最常見的jar包:json-lib。

6.2.1 Jar包下載

:http://json-lib.sourceforge.net/

 

6.2.2 基本方法 普通資料轉 JSONObject /**
 * 普通資料轉 JSON
 */
public static void JsonTest1() {
    JSONObject normalJson = new JSONObject();
    normalJson.put("name", "zhangsan");
    normalJson.put("sex", "男");
    normalJson.put("age", new Integer(22));
    System.out.println(normalJson.toString());
}

 

Map資料轉 JSON /**
 * Map資料轉 JSON
 */
public static void JsonTest2() {
    Map<String, Object> map = new HashMap<String, Object>();
    map.put("name", "zhangsan"); // string 類型
    map.put("age", new Integer(22)); // number 類型
    Object obj = new String("params");
    map.put("obj", obj); // Object 類型
    map.put("array", new String[] { "a", "b", "c" }); // array 類型
    map.put("b_true", Boolean.TRUE); // boolean 類型
    map.put("b_false", Boolean.FALSE); // boolean 類型
   
    JSONObject json = JSONObject.fromObject(map);
    System.out.println(json.toString());
}


List 資料轉 JSON /**
 * List資料轉 JSON
 */
public static void JsonTest3() {
    List<String> list = new ArrayList<String>();
    list.add("first");
    list.add("second");
    JSONArray jsonArray = JSONArray.fromObject(list);
    System.out.print(jsonArray);
}


數組資料轉 JSON /**
 * 數組資料轉 JSON
 */
public static void JsonTest4() {
    String[] colors = new String[]{ "red", "yellow", "blue" };
    JSONArray jsonArray = JSONArray.fromObject(colors);
    System.out.println(jsonArray);
}


構建 JSON 文本

JSONStringer可以用來快速構建一個JSON格式的文本,並轉換成String,可以寫入檔案;

JSONStringer是JSONWriter的子類;

JSONStringer一般通過object().key().value().key().value().endObject()進行構造;

object() 表明開始一個對象,即添加‘{‘;

endObject() 表明結束一個對象,即添加‘}‘;

array() 表明開始一個數組,即添加一個‘[‘;

endArray() 表明結束一個數組,即添加一個‘]‘;

key() 表示添加一個key;

value() 表示添加一個value;

/**
 * 構建 JSON 文本
 */
public static void JsonTest5() {
    JSONStringer stringer = new JSONStringer(); 
    String str = stringer.object().key("product").value("phone").key("num").value(20).endObject().toString(); 
    System.out.println(str); 
}


參考資料

http://www.json.org/

http://www.runoob.com/json/json-tutorial.html 

[Java IO]06_JSON操作

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.