1. 程式人生 > >json與list,map互轉 ,Json語法

json與list,map互轉 ,Json語法

Json

  •  定義
  • Json語法
  • Json使用
  • JSON 解析器
  • Json與常見的型別之間的轉換
  • Json-jar包下載連結

定義

        JSON(JavaScript Object Notation, JS 物件標記) 是一種輕量級的資料交換格式。
       它基於 ECMAScript (w3c制定的js規範)的一個子集,採用完全獨立於程式語言的文字格式來儲存和表示資料。
       簡潔和清晰的層次結構使得 JSON 成為理想的資料交換語言。 
       易於人閱讀和編寫,同時也易於機器解析和生成,並有效地提升網路傳輸效率。

Json語法
        JSON 語法是 JavaScript 物件表示法 語法的子集。

        JSON 語法規則
            ●資料在名稱/值對中
            ●資料由逗號分隔
            ●花括號儲存物件
            ●方括號儲存陣列

           ·        資料在名稱/值對中
名稱/值對包括欄位名稱(在雙引號中),
後面寫一個冒號,然後是值:
如:"firstName" : "John" 
在javaScript相當於firstName = "John"

                    JSON 值
                        JSON 值可以是:
•數字(整數或浮點數)
•字串(在雙引號中)
•邏輯值(true 或 false)
•陣列(在方括號中)
•物件(在花括號中)
•null

                    JSON 物件
                        JSON 物件在花括號中書寫:
                        物件可以包含多個名稱/值對:
                        { "firstName":"John" , "lastName":"Doe" }


                    JSON 陣列
                        JSON 陣列在方括號中書寫:
                        陣列可包含多個物件:
                        {"employees": [
                        { "firstName":"John" , "lastName":"Doe" },
                        { "firstName":"Anna" , "lastName":"Smith" },
                        { "firstName":"Peter" , "lastName":"Jones" } ] }
                        物件 "employees" 是包含三個物件的陣列。
                        每個物件代表一條關於某人(有姓和名)的記錄

                    JSON 使用 JavaScript 語法
                        因為 JSON 使用 JavaScript 語法,
                        所以無需額外的軟體就能處理 JavaScript 中的 JSON。

                        通過 JavaScript,您可以建立一個物件陣列,並像這樣進行賦值:
                            var employees = [
                               { "firstName":"Bill" , "lastName":"Gates" },
                               { "firstName":"George" , "lastName":"Bush" },
                               { "firstName":"Thomas" , "lastName": "Carter" }
                                 ];
                        可以像這樣訪問 JavaScript 物件陣列中的第一項:
                        employees[0].lastName;
                        返回的內容是:
                        Gates
                        可以像這樣修改資料:
                        employees[0].lastName = "Jobs";

Json使用

    JSON 最常見的用法之一,是從 web 伺服器上讀取 JSON 資料(作為檔案或作為 HttpRequest),將 JSON 資料轉換為     JavaScript 物件,然後在網頁中使用該資料。

JSON 解析器
    提示:eval() 函式可編譯並執行任何 JavaScript 程式碼。這隱藏了一個潛在的安全問題。
           使用 JSON 解析器將 JSON 轉換為 JavaScript 物件是更安全的做法。JSON 解析器只能識別 JSON 文字,而不會編譯腳     本。
    在瀏覽器中,這提供了原生的 JSON 支援,而且 JSON 解析器的速度更快。
           較新的瀏覽器和最新的 ECMAScript (JavaScript) 標準中均包含了原生的對 JSON 的支援。

Json與常見的型別之間的轉換

 阿里的fastJson.jar

            Json與list的相互轉換:
                ●list 轉換為Json
                    List<Person> list = new ArrayList<Person>();
                    String str = JSON.toJSON(list).toString;
                ●Json轉換為list
                    List<User> persons = new ArrayList<User>();
                    List = JSONObject.parseArray(jasonArray,User.class);

             Json與map的相互轉換

                ●map 轉換為Json
                Map<String, String> maps = new HashMap<String, String>();
                String str = JSON.toJSONString(maps);
                ●Json轉換為map
                Map<String,String> maps = JSON.parseObject(str,Map.class);

             Json與陣列相互轉換

                ●陣列轉json格式字串
                String[] arr = {"bill","green","maks","jim"};  
                String jsonText = JSON.toJSONString(arr, true);  
                ●json格式字串轉陣列 
                String jsonText = "[\"bill\",\"green\",\"maks\",\"jim\"]";  

                 JSONArray jsonArr = JSON.parseArray(jsonText);  

   谷歌的Gson.jar

         ●list 轉換為Json

                Gson gson = new Gson();

                List<User> persons = new ArrayList<User>();

                String str = gson.toJson(persons);

         ●Json轉換為list

                Gson gson = new Gson();

                List<User> persons = gson.fromJson(str,new TypeToken<List<User>>{}.getType());


           JSON-jar包下載連結(alibaba gson):密碼 2mkk