js中js数组、对象与json之间的转换

数据传输过程中,json是以文本,即字符串的形式传递的,而JS操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换是关键。例如:
JSON字符串:
var str1 = ‘{ "name": "cxh", "sex": "man" }‘;
JSON对象:
var str2 = { "name": "cxh", "sex": "man" };

一、JSON字符串转换为JSON对象

要使用上面的str1,必须使用下面的方法先转化为JSON对象:

//由JSON字符串转换为JSON对象

var obj = eval_r(‘(‘ + str + ‘)‘);

或者

var obj = str.parseJSON(); //由JSON字符串转换为JSON对象

或者

var obj = JSON.parse(str); //由JSON字符串转换为JSON对象

然后,就可以这样读取:

Alert(obj.name);

Alert(obj.sex);

特别注意:如果obj本来就是一个JSON对象,那么使用eval()函数转换后(哪怕是多次转换)还是JSON对象,但是使用parseJSON()函数处理后会有问题(抛出语法异常)。

二、可以使用toJSONString()或者全局方法JSON.stringify()将JSON对象转化为JSON字符串。

例如:

var last=obj.toJSONString(); //将JSON对象转化为JSON字符

或者

var last=JSON.stringify(obj); //将JSON对象转化为JSON字符

alert(last);

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

实例代码:

var milasUrlArr=new Array();//新建一个数组
        var subMilasUrlArr=new Array();//新建一个子数组
       $(".innerTable1 tbody tr").each(function(){//遍历表格行
           $(this).find("input").each(function(){
         subMilasUrlArr.push($(this).val());//获取每行中的每个表格input数据,并存入子数组
          })
          milasUrlArr.push(subMilasUrlArr);//将子数组数据存进父数组
       });
       var milasUrl={};
       for(var item in milasUrlArr){
      milasUrl[item]= milasUrlArr[item];   //这样循环就可以将milasUrlArr数组中的属性包括方法copy到milasUrl对象中了
       }

alert(JSON.stringify(milasUrl));

时间: 2024-08-07 20:56:57

js中js数组、对象与json之间的转换的相关文章

js中的数组对象排序

一.普通数组排序 js中用方法sort()为数组排序.sort()方法有一个可选参数,是用来确定元素顺序的函数.如果这个参数被省略,那么数组中的元素将按照ASCII字符顺序进行排序.如: var arr = ["a", "b", "A", "B"]; arr.sort(); console.log(arr);//["A", "B", "a", "b"

js中的数组对象排序(方法sort()详细介绍)

定义和用法 sort() 方法用于对数组的元素进行排序. 语法    arrayObject.sort(sortby) 参数sortby:可选.规定排序顺序.必须是函数. 返回值 对数组的引用.请注意,数组在原数组上进行排序,不生成副本. 普通数组排序: js中用方法sort()为数组排序.sort()方法有一个可选参数,是用来确定元素顺序的函数.如果这个参数被省略,那么数组中的元素将按照ASCII字符顺序进行排序.如: 字母A.B的ASCII值分别为65.66,而a.b的值分别为97.98,所

js中的数组/对象(阮一峰的js基础教程)

//打印出键值1 Object.keys(array1) 2 ["0", "1", "2", "3", "4", "5"] Object.keys方法返回数组的所有键名.js规定:对象的键名一律为字符串,所以,数组的键名其实也是字符串.之所以可以用数值读取,是因为非字符串的键名会被转为字符串. arr.0的写法不合法,因为单独的数值不能作为标识符(identifier).所以,数组成员只

Java对象与Json之间的转换

使用Jackson的ObjectMapper对象的readValue和writeValueAsString方法可以进行转换. 对于简单基本类型或String类型的对象,使用上述方法可以满足. 但是如果要转换复杂类型Collection如 List<YourBean>,那么就需要先反序列化复杂类型为泛型的Collection Type. 如果是ArrayList<YourBean>那么使用ObjectMapper 的getTypeFactory().constructParametr

JS中申明数组的三种方法

JS中的数组对象可以存放的元素非常丰富,包括number.String等基本的数据类型以及object对象还有数组类型,他们都可以构成数组元素的一部分. 方法1: var a = new array(); a[0] = "1";//String类型 a[1] = 2;//number类型 a[2] = { x:1, y:3};//object对象作为数组的元素 //方法2: var  a  =  new array("1" , 2 , {x:1,y:3} ); //

js中两个对象的比较

代码取自于underscore.js 1.8.3的isEqual函数. 做了一些小小的修改,主要是Function的比较修改. 自己也加了一些代码解读. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>js中两个对象的比较</title> <script> /* 需求难点描述: 数组和对象,都

字符串方法,js中的数组方法,ES5新增的数组方法,以及jQuery中的数组方法

说明:本片主要对比介绍与数组操作相关的方法 (一)字符串方法(String对象方法) indexOf() //检索字符串 lastIndexOf() //从后向前搜索字符串 match() //找到一个或多个正则表达式的匹配 replace() //替换与正则表达式匹配的子串 search() //检索与正则表达式相匹配的值 slice() //提取字符串的片断,并在新的字符串中返回被提取的部分 split() //把字符串分割为字符串数组 substr() //从起始索引号提取字符串中指定数目

JavaScript学习-js中的数组/Boolean类/字符串String类

JavaScript学习 [js中的数组] 1.数组的概念:是在内存中连续储存对个有序元素的结构 元素的顺序称为下标,通过下标查找对象元素. 2.数组的声明: ① 字面量声明:var arr1 = []; js中,同一数组,可以储存多种不同的数据类型: 例如: var arr1 = [1,"2",true,{"name":"hahhah"},[1,2]] ② new关键字声明: var arr2 = new Arry(参数) >>&g

js中对数组的操作-------Day49

今天碰到了一个问题:easyui的使用中,datagrid表格的高度如何改变(设定成一个固定的高度),看了半天文档,也从网上查了些,还楞是没弄出来,有点小郁闷,这easyui在某些情况情况下确实好用了,可要随意调整实在是有些麻烦啊. 做不出就先放放,回家了就换个心情. 昨天在回放拖拽轨迹的实现中,对数组的应用成了关键的一步,于是特意查看了一些javascript对数组的操作,这里来记录下: "增删改查"这四个字相信都不陌生,我们绝大多数的工作都是在进行这些操作,而这些操作却有一个大前提