Json對象和Json字符串的區別


1、Json概念

  • 概念:JSON (JavaScript Object Notation) 一種簡單的數據格式,是一種比較輕量級的數據存儲格式;
  • 優點:
  • 缺點:

2、Json與JS對象的對比

 區

 別

             JSON              JavaScript

  含

  義

       僅僅是一種數據格式                   類的實例

  傳

  輸

可以跨平台數據傳輸,速度快                   不能傳輸

  表

  現

  • 鍵值對的方式,屬性必須加雙引號
  • 值不可以是方法函數、undefined以及NAN
  • 鍵值對方式,屬性不加引號
  • 值可以是函數、對象、字符串、數字、boolean 等

  相

  互    轉

  換

Json字符串轉換為JS對象

  • JSON.parse(str),不兼容IE7
  •    eval("(" + str + ")");(兼容所有瀏覽器,但是不安全,會執行json里面的表達式)

JS對象轉換為Json字符串

JSON.stringify(obj)

3、Json對象

  • 最顯著的特征:對象的值可以用 “對象.屬性” 進行訪問;
  • typeOf(json對象)       ===>    Object類型
  • 例子如下:
    var person={"name":"shily","sex":"女","age":"23"}//json對象
    console.log(person); console.log(person.name);
    console.log(typeof person);

    輸出結果是:

    

4、Json字符串(所謂字符串:單引號或者雙引號引起來) 

  •  例子如下:
    var person='{"name":"shily","sex":"女","age":"23"}';//json字符串
    console.log(person)
    console.log(person.name)
    console.log(typeof person)

    輸出結果是:

          

5、Json對象與Json字符串的相互轉化

  • Json字符串轉化為Json對象( JSON.parse() )
    var  str = '{"name":"shily","sex":"女","age":"23"}';
    var  strToObj = JSON.parse(str);
    console.log(strToObj);
    console.log(typeof strToObj);
    console.log(strToObj.name)

    輸出結果為: 

          

  • Json對象轉化為Json字符串( JSON.stringify() )
    var  obj = {"name":"shily","sex":"女","age":"23"}//json對象
    var  objToStr = JSON.stringify(obj);
    console.log(objToStr);
    console.log(typeof objToStr)

    輸出結果為:

           

6、Json數據在哪種格式下會發生轉換

  • 調用第三方接口返回json字符串,我們自己處理成所需格式的json數據?
  •  往JSONObject對象中添加屬性及屬性值,最后將JSONObjecct對象轉成json數據返回?

7、SpringMvc接受Json字符串類型

  • 基於Rest風格的開發,前端ajax提交的是一個json格式的字符串,后台以@RequestBody接受的json對象
    <script type="text/javascript">  
        $(document).ready(function(){  
            var saveDataAry=[];  
            var data1={"userName":"test","address":"gz"};  
            var data2={"userName":"ququ","address":"gr"};  
            saveDataAry.push(data1);  
            saveDataAry.push(data2);         
            $.ajax({ 
                type:"POST", 
                url:"user/saveUser", 
                dataType:"json",      
                contentType:"application/json",               
                data:JSON.stringify(saveData), 
                success:function(data){ 
    
                } 
             }); 
        });  
    </script>

    上面代碼,首先push方法將其封裝到數組中,其表現格式:

    [
        {"userName":"test","address":"gz"},
        {"userName":"ququ","address":"gr"}
    ]

    JSON.stringify(saveData)將其轉換為json字符串:同時ajax請求的時候也要指定dataType: “json”,contentType:”application/json” 這樣就可以輕易的將一個對象或者List傳到Java端。

  • 后台接收
    @Controller
    @RequestMapping(value = "saveUser", method=RequestMethod.POST ) 
    @ResponseBody  
    public void saveUser(@RequestBody List<User> users) { 
        userService.batchSave(users); 
    } 

    后台用@RequestBody將其封裝到List<User>中。然后進入Service層。

    GET、POST方式提時, 根據request header Content-Type的值來判斷:
    application/x-www-form-urlencoded, 可選(即非必須,因為這種情況的數據@RequestParam, @ModelAttribute也可以處理,當然@RequestBody也能處理);
    multipart/form-data, 不能處理(即使用@RequestBody不能處理這種格式的數據);
    其他格式, 必須(其他格式包括application/json, application/xml等。這些格式的數據,必須使用@RequestBody來處理)。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM