JS处理各种JSON类型数据

来源:互联网 发布:可以打鼓的软件 编辑:程序博客网 时间:2024/06/05 10:26
JS 处理JSON数据及javascript处理对象、JSON对象、hash对象、数组对象的方法

[javascript] view plain copy
  1. <!DOCTYPE html>  
  2. <html>  
  3. <body>  
  4.   
  5. <p>  
  6. JS 操作JSON   
  7. </p>  
  8.   
  9. <script>  
  10.     //JSON字符串  
  11.     var str1 = '{"name": "danny", "age":"18" }';  
  12.     document.write("str1:" + str1);  
  13.   
  14.     document.write("<br />");  
  15.   
  16.     //JSON对象  
  17.     var str2 = {"name""danny""age":"18" };  
  18.     document.write("str2:" + str2);  
  19.   
  20.     document.write("<br />");  
  21.   
  22.     //JSON字符串转换成JSON对象  
  23.     //eval(),JSON字符串str1转换成JSON对象,需加上()  
  24.     var str3 = eval('(' + str1 + ')');//JS 自带  
  25.     document.write("str3:" + str3);  
  26.     document.write("<br />");  
  27.     //parseJSON(),JSON字符串str1转换成JSON对象  
  28.     //var str4 = str1.parseJSON();//未成功  
  29.     var str4 = JSON.parse(str1);//成功  
  30.     document.write("str4:" + str4);  
  31.      
  32.    //对象转换成JSON对象  
  33.     document.write("<br />");  
  34.     //var str5 = eval('(' + str2 + ')');//eval(),报错  
  35.     //var str5 =  JSON.parse(str2);//报错  
  36.     //var str5 = str2.parseJSON();//报错,has no method parseJSON  
  37.     //document.write("str5:" + str5);  
  38.   
  39.     //访问结果  
  40.     alert(str1.name);//运行结果:undefined,JSON String 无法用这种方式访问,需转换  
  41.     alert(str2.name);//运行结果:danny  
  42.     alert(str3.name);//运行结果:danny  
  43.     alert(str4.name);//运行结果:danny  
  44.     //alert(str5.name);//运行结果:danny  
  45.   
  46.     //JSON对象转换成JSON字符转  
  47.     //var toJSONStr=str2.toJSONString();//运行结果has no method 'toJSONString'  
  48.     var toJSONStr=JSON.stringify(str2);//成功  
  49.     alert(toJSONStr);//运行结果:{"name": "danny", "age":"18" }  
  50.   
  51.    //为了方便处理JSON数据,JSON提供json.js包  
  52.  /* 
  53. 上面的多个要领中,除了eval()函数是js自带的之外,其他的多个要领都来自json.js包。新版本的 JSON 修改了 API,将 JSON.stringify() 和 JSON.parse() 两个要领都注入到了 Javascript 的内建对象里面,前者变成了 Object.toJSONString(),而后者变成了 String.parseJSON()。如果提示找不到toJSONString()和parseJSON()要领,则说明您的json包版本太低。 
  54. */  

以上代码部分运行结果:

JS 操作JSON

str1:{"name": "danny", "age":"18" }
str2:[object Object]
str3:[object Object]
str4:[object Object]

参考自:http://www.cnblogs.com/worfdream/articles/1956449.html

2:JSON对象赋值,与JS对象类似,打印结果相同

[javascript] view plain copy
  1.  //JSON字符串  
  2. var person={};//JS 对象 var person = new Object();  
  3. person.firstname="Bill";  
  4. person.lastname="Gates";  
  5. person.age=56;  
  6. person.eyecolor="blue";  
  7. document.write("str1:" + person.firstname);  
  8. document.write("<br />");  

小结一:

在数据传输流程中,json是以文本,即字符串的形式传递的,而JS操作的是JS对象,因此JSON对象与JSON字符串 之间的转换是关键;


第二部分:HASH表(哈希表)

参考自:http://www.nowamagic.NET/librarys/veda/detail/759

1、什么是哈希表?

哈希表就是(key, value)对,在JavaScript中,“对象"包括普通对象、数组对象、JSON对象、Hash对象实际上都是一个哈希表,即键值对,都可通过key获取value,通过a.key = value设置key,value

2.例子

[javascript] view plain copy
  1.   //JSON对象、对象或数组对象  
  2.    //数组对象,数组对象只能放一个  
  3.    var person=new Array();//new Object()或var person={};效果一样  
  4.    person['firstname']="Bill";  
  5.    person['lastname']="Gates";  
  6.    person['age']=56;  
  7.    person['eyecolor']="blue";  
  8.    document.write("str1:" + person.firstname);  
  9.   document.write("str1长度:" + person.length);  
  10.    document.write("<br />");  
  11.   
  12.    //JSON对象  
  13.    var person2 = {  
  14.       "name":"tom",  
  15.       "age": 18  
  16.    }   
  17.    document.write("str2:" + person2.name);  
  18.    document.write("<br />");  
  19.   
  20.   //Hash对象  
  21.   var person3 = {  
  22.       name:"tom",  
  23.       age: 18  
  24.    }  
  25.    person3.sex = "female";  
  26.    person3.toString = function(){  
  27.        return this.name + "," + this.age + "," + this.sex  
  28.    }  
  29.    document.write("str3:" + person3.sex);  
  30.    document.write("<br />");  
  31.   
  32.    document.write("str1ToString:" + person.toString());  
  33.    document.write("<br />");  
  34.    document.write("str2ToString:" + person2.toString());  
  35.    document.write("<br />");  
  36.    document.write("str1ToString:" + person3.toString());  
  37.    document.write("<br />");  
  38.     
  39.    //数组,不是数组对象   
  40.    person4 = ["danny", 18];  
  41.    document.write("str4ToString:" + person4.toString());  
  42.    document.write("<br />");  
  43.    /* 
  44.  
  45. 小结: javascript 数组对象var a = [];a['name']=???, a['age']=18(不是数组,数组a=[1,2,3]),JSON对象,对象,实际上都是是哈希表(key,value)键值对,因此都可以用相同的方式赋值、获取,但是数组(不是数组对象)就不可以用key的方式获取value,因为数组本来就没有key 
  46.  
  47. */  
0 0