JS 处理JSON数据及javascript处理对象、JSON对象、hash对象、数组对象的方法

//
<!DOCTYPE html>
<html>
<body>

<p>
JS 操作JSON 
</p>

<script>
    //JSON字符串
    var str1 = '{"name": "danny", "age":"18" }';
    document.write("str1:" + str1);

    document.write("<br />");

    //JSON对象
    var str2 = {"name": "danny", "age":"18" };
    document.write("str2:" + str2);

    document.write("<br />");

    //JSON字符串转换成JSON对象
    //eval(),JSON字符串str1转换成JSON对象,需加上()
    var str3 = eval('(' + str1 + ')');//JS 自带
    document.write("str3:" + str3);
    document.write("<br />");
    //parseJSON(),JSON字符串str1转换成JSON对象
    //var str4 = str1.parseJSON();//未成功
    var str4 = JSON.parse(str1);//成功
    document.write("str4:" + str4);
   
   //对象转换成JSON对象
    document.write("<br />");
    //var str5 = eval('(' + str2 + ')');//eval(),报错
    //var str5 =  JSON.parse(str2);//报错
    //var str5 = str2.parseJSON();//报错,has no method parseJSON
    //document.write("str5:" + str5);

    //访问结果
    alert(str1.name);//运行结果:undefined,JSON String 无法用这种方式访问,需转换
    alert(str2.name);//运行结果:danny
    alert(str3.name);//运行结果:danny
    alert(str4.name);//运行结果:danny
    //alert(str5.name);//运行结果:danny

    //JSON对象转换成JSON字符转
    //var toJSONStr=str2.toJSONString();//运行结果has no method 'toJSONString'
    var toJSONStr=JSON.stringify(str2);//成功
    alert(toJSONStr);//运行结果:{"name": "danny", "age":"18" }

   //为了方便处理JSON数据,JSON提供json.js包
 /*
上面的多个要领中,除了eval()函数是js自带的之外,其他的多个要领都来自json.js包。新版本的 JSON 修改了 API,将 JSON.stringify() 和 JSON.parse() 两个要领都注入到了 Javascript 的内建对象里面,前者变成了 Object.toJSONString(),而后者变成了 String.parseJSON()。如果提示找不到toJSONString()和parseJSON()要领,则说明您的json包版本太低。
*/

以上代码部分运行结果:

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对象类似,打印结果相同

    //JSON字符串
   var person={};//JS 对象 var person = new Object();
   person.firstname="Bill";
   person.lastname="Gates";
   person.age=56;
   person.eyecolor="blue";
   document.write("str1:" + person.firstname);
   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.例子

  //JSON对象、对象或数组对象
   //数组对象,数组对象只能放一个
   var person=new Array();//new Object()或var person={};效果一样
   person['firstname']="Bill";
   person['lastname']="Gates";
   person['age']=56;
   person['eyecolor']="blue";
   document.write("str1:" + person.firstname);
  document.write("str1长度:" + person.length);
   document.write("<br />");

   //JSON对象
   var person2 = {
      "name":"tom",
      "age": 18
   } 
   document.write("str2:" + person2.name);
   document.write("<br />");

  //Hash对象
  var person3 = {
      name:"tom",
      age: 18
   }
   person3.sex = "female";
   person3.toString = function(){
       return this.name + "," + this.age + "," + this.sex
   }
   document.write("str3:" + person3.sex);
   document.write("<br />");

   document.write("str1ToString:" + person.toString());
   document.write("<br />");
   document.write("str2ToString:" + person2.toString());
   document.write("<br />");
   document.write("str1ToString:" + person3.toString());
   document.write("<br />");
  
   //数组,不是数组对象 
   person4 = ["danny", 18];
   document.write("str4ToString:" + person4.toString());
   document.write("<br />");
   /*

小结: javascript 数组对象var a = [];a['name']=???, a['age']=18(不是数组,数组a=[1,2,3]),JSON对象,对象,实际上都是是哈希表(key,value)键值对,因此都可以用相同的方式赋值、获取,但是数组(不是数组对象)就不可以用key的方式获取value,因为数组本来就没有key

*/
   
    


部分输出结果:

JS 操作JSON

str1:Billstr1长度:0
str2:tom
str3:female
str1ToString:
str2ToString:[object Object]
str1ToString:tom,18,female
str4ToString:danny,18//只有数组有toString(),其他需要写toString()方法




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值