重新认识json数据格式

张映 发表于 2011-04-20

分类目录: nodejs/vue/js/jquery

标签:, ,

php4时我就用过json,那个时候还没有json_decode,json_encode这样的函数,要把数据转换成json,就要加载一个JSON.php。用的时间挺长,但是我一直对json有一种误解,我总认为json只是数据传输过程中的一个中间阶段,就像xml一样,我总会把他们二联想到一起。

一,什么json

JSON 也是基于纯文本的数据格式。由于 JSON 天生是为 JavaScript 准备的,因此,JSON 的数据格式非常简单,您可以用 JSON 传输一个简单的 String,Number,Boolean,也可以传输一个数组,或者一个复杂的 Object 对象。

既然是为javascript准备,js肯定能直接把json数据读取出来,我以前的做法是把json数据转换成数组,或者是对象数组,然后在得到我想要的数据,其实没有这个必要。

二,js可以直接从json中读取数据

<script type="text/javascript">
/**
 one对应的数据如下:
stdClass Object
(
    [stock_id] => 50322
    [goods_id] => 3998
    [product_id] => 9777
    [number] => 300
    [uptime] => 2011-04-19 04:42:19
)
 */
var one = {"stock_id":"50322","goods_id":"3998","product_id":"9777","number":"300","uptime":"2011-04-19 04:42:19"};

/**
two对应的数据如下:
Array
(
    [0] => stdClass Object
        (
            [stock_id] => 50322
            [goods_id] => 3998
            [product_id] => 9777
            [number] => 300
            [uptime] => 2011-04-19 04:42:19
        )

    [1] => stdClass Object
        (
            [stock_id] => 50327
            [goods_id] => 3998
            [product_id] => 9778
            [number] => 300
            [uptime] => 2011-04-19 04:41:21
        )

)
*/
var two = [{"stock_id":"50322","goods_id":"3998","product_id":"9777","number":"300","uptime":"2011-04-19 04:42:19"},
{"stock_id":"50327","goods_id":"3998","product_id":"9778","number":"300","uptime":"2011-04-19 04:41:21"}];

alert(one["goods_id"]);               //会弹出3998
alert(two[1]["product_id"]);          //会弹出9778

for(a in one){
alert(one[a]);                    //把one这个json数据结构的数据都弹出来,a是下标
}

for(i=0;i<one.length;i++){
alert(one[i]);                  //不会弹出任何东西,但也不会报错,程序会继续执行,汗
}

for(a in two){
for(b in two[a]){
alert(b+"=>"+two[a][b]);        //把two的所有数据都弹出来,对二维数组对象支持很好
}
}

for(i=0;i<two.length;i++){
alert(two[i]['stock_id']); //这里会弹出,50322,50327在这里可以,为什么一维的不能呢,
}                               //可以看一下上面的数据,二维的数组下标正好是从0开始的,
</script>                       //如果把one里面的下标换成数字就可以了。

有了上面的实验结果,以后在进行异步请时,返回json数据,我就不用在去转换了,说白了,还是要多看,多学,不断提高自己。



转载请注明
作者:海底苍鹰
地址:http://blog.51yip.com/jsjquery/1243.html