实例学习js实现json与数组字符串相互转化的方法

发布时间:2019-10-01编辑:脚本学堂
有关js将json与数组字符串相互转化的实现方法,javascript对象转换成json字符串的例子。

一、js中json与数组字符串相互转化

复制代码 代码示例:

<script language="javascript">
var t="{'firstName': 'cyra', 'lastName': 'richardson', 'address': {
'streetAddress': '1 Microsoft way', 'city': 'Redmond', 'state': 'WA',
'postalCode': 98052 },'phoneNumbers': [ '425-777-7777','206-777-7777' ]
}";
var jsonobj=eval('('+t+')');
alert(jsonobj.firstName);
alert(jsonobj.lastName);

var t2="[{name:'zhangsan',age:'24'},{name:'lisi',age:'30'},{name:'wangwu',age:'16'},{name:'tianqi',age:'7'}] ";
var myobj=eval(t2);

for(var i=0;i<myobj.length;i++){
   alert(myobj[i].name);
   alert(myobj[i].age);
}

var t3="[['<a href=#
onclick=openLink(14113295100,社旗县国税局桥头税务
所,14113295100,d6d223892dc94f5bb501d4408a68333d,swjg_dm);>14113295100</a>','
社旗县国税局桥头税务所','社旗县城郊乡长江路西段']]";

//通过eval() 函数可以将JSON字符串转化为对象
var obj = eval(t3);

for(var i=0;i<obj.length;i++){
   for(var j=0;j<obj[i].length;j++){
alert(obj[i][j]);
}
}

/*
//stringifier 函数的作用跟 parse 相反, 用来将一个js对象转换为 JSON 文本。
var jsonText = JSON.stringify(obj);
alert(jsonText);

//如果基于安全的考虑的话,最好是使用一个 JSON 解析器。 一个 JSON 解析器将只接受 JSON 文本。所以是更安全的。
var myObject = JSON.parse(myJSONtext, filter); 

//可选的 filter 参数将遍历每一个value key 值对, 并进行相关的处理。如:
//如
myData = JSON.parse(text, function (key, value) {  
return key.indexOf('date') >= 0 ? new Date(value) : value;});

//stringifier 函数的作用跟 parse 相反, 用来将一个js对象转换为 JSON 文本。
var myJSONText = JSON.stringifier(myObject);
*/
</script>

二,javascript对象转换成json字符串

javascript 对象转换成 json字符串[js对象转换成json字符串]

使用$.toJSON(Object)就可以转换了,转换之前先引入jquery.json.js
 

复制代码 代码示例:

/*
 * jQuery JSON Plugin
 * version: 2.1 (2009-08-14)
 *
 * This document is licensed as free software under the terms of the
 * MIT License: http://www.opensource.org/licenses/mit-license.php
 *
 * Brantley Harris wrote this plugin. It is based somewhat on the JSON.org
 * website's http://www.json.org/json2.js, which proclaims:
 * "NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.", a sentiment that
 * I uphold.
 *
 * It is also influenced heavily by MochiKit's serializeJSON, which is
 * copyrighted 2005 by Bob Ippolito.
 */
 
(function($) {
/** jQuery.toJSON( json-serializble )
Converts the given argument into a JSON respresentation.
If an object has a "toJSON" function, that will be used to get the representation.
Non-integer/string keys are skipped in the object, as are keys that point to a function.
json-serializble:
The *thing* to be converted.
 **/
$.toJSON = function(o)
{
if (typeof(JSON) == 'object' && JSON.stringify)
return JSON.stringify(o);

var type = typeof(o);

if (o === null)
return "null";

if (type == "undefined")
return undefined;

if (type == "number" || type == "boolean")
return o + "";

if (type == "string")
return $.quoteString(o);

if (type == 'object')
{
if (typeof o.toJSON == "function")
return $.toJSON( o.toJSON() );

if (o.constructor === Date)
{
var month = o.getUTCMonth() + 1;
if (month < 10) month = '0' + month;
var day = o.getUTCDate();
if (day < 10) day = '0' + day;
var year = o.getUTCFullYear();

var hours = o.getUTCHours();
if (hours < 10) hours = '0' + hours;

var minutes = o.getUTCMinutes();
if (minutes < 10) minutes = '0' + minutes;

var seconds = o.getUTCSeconds();
if (seconds < 10) seconds = '0' + seconds;

var milli = o.getUTCMilliseconds();
if (milli < 100) milli = '0' + milli;
if (milli < 10) milli = '0' + milli;
return '"' + year + '-' + month + '-' + day + 'T' +
 hours + ':' + minutes + ':' + seconds +
 '.' + milli + 'Z"';
}
if (o.constructor === Array)
{
var ret = [];
for (var i = 0; i < o.length; i++)
ret.push( $.toJSON(o[i]) || "null" );
return "[" + ret.join(",") + "]";
}

var pairs = [];
for (var k in o) {
var name;
var type = typeof k;
if (type == "number")
name = '"' + k + '"';
else if (type == "string")
name = $.quoteString(k);
else
continue;  //skip non-string or number keys

if (typeof o[k] == "function")
continue;  //skip pairs where the value is a function.

var val = $.toJSON(o[k]);

pairs.push(name + ":" + val);
}
return "{" + pairs.join(", ") + "}";
}
};
/** jQuery.evalJSON(src)
Evaluates a given piece of json source.
 **/
$.evalJSON = function(src)
{
if (typeof(JSON) == 'object' && JSON.parse)
return JSON.parse(src);
return eval("(" + src + ")");
};

/** jQuery.secureEvalJSON(src)
Evals JSON in a way that is *more* secure.
**/
$.secureEvalJSON = function(src)
{
if (typeof(JSON) == 'object' && JSON.parse)
return JSON.parse(src);

var filtered = src;
filtered = filtered.replace(/["/bfnrtu]/g, '@');
filtered = filtered.replace(/"[^"nr]*"|true|false|null|-?d+(?:.d*)?(?:[eE][+-]?d+)?/g, ']');
filtered = filtered.replace(/(?:^|:|,)(?:s*[)+/g, '');

if (/^[],:{}s]*$/.test(filtered))
return eval("(" + src + ")");
else
throw new SyntaxError("Error parsing JSON, source is not valid.");
};
/** jQuery.quoteString(string)
Returns a string-repr of a string, escaping quotes intelligently. 
Mostly a support function for toJSON.

Examples:
>>> jQuery.quoteString("apple")
"apple"

>>> jQuery.quoteString('"Where are we going?", she asked.')
""Where are we going?", she asked."
 **/
$.quoteString = function(string)
{
if (string.match(_escapeable))
{
return '"' + string.replace(_escapeable, function (a)
{
var c = _meta[a];
if (typeof c === 'string') return c;
c = a.charCodeAt();
return 'u00' + Math.floor(c / 16).toString(16) + (c % 16).toString(16);
}) + '"';
}
return '"' + string + '"';
};

var _escapeable = /["x00-x1fx7f-x9f]/g;

var _meta = {
'b': 'b',
't': 't',
'n': 'n',
'f': 'f',
'r': 'r',
'"' : '"',
'': '\'
};
})(jQuery);

三、js array json String js中数组转json

数组为:
var a = { 
name: "XXXX",
year: 1990, 
old: 21 
}; 

使用json类: 
var b = JSON.stringify(a);  
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
<HTML> 
<HEAD> 
<TITLE>js数组转为json数据</TITLE> 
<SCRIPT LANGUAGE="JavaScript"> 
var t="{'firstName': 'cyra', 'lastName': 'richardson', 'address': { 'streetAddress': '1 Microsoft way', 'city': 'Redmond', 'state': 'WA', 'postalCode': 98052 },'phoneNumbers': [ '425-777-7777','206-777-7777' ] }"; 
 var jsonobj=eval('('+t+')'); 
 alert(jsonobj.firstName); 
 alert(jsonobj.lastName); 
  
var t2="[{name:'zhangsan',age:'24'},{name:'lisi',age:'30'},{name:'wangwu',age:'16'},{name:'tianqi',age:'7'}] "; 
var myobj=eval(t2); 
for(var i=0;i<myobj.length;i++){ 
alert(myobj[i].name); 
alert(myobj[i].age); 

var t3="[['<a href=# onclick=openLink(14113295100,社旗县国税局桥头税务所,14113295100,d6d223892dc94f5bb501d4408a68333d,swjg_dm);>14113295100</a>','社旗县国税局桥头税务所','社旗县城郊乡长江路西段']]"; 
//通过eval() 函数可以将JSON字符串转化为对象 
var obj = eval(t3); 
for(var i=0;i<obj.length;i++){ 
for(var j=0;j<obj[i].length;j++){ 
 alert(obj[i][j]); 


/*
//stringifier 函数的作用跟 parse 相反, 用来将一个js对象转换为 JSON 文本。
var jsonText = JSON.stringify(obj);
alert(jsonText);
 
//如果基于安全的考虑的话,最好是使用一个 JSON 解析器。 一个 JSON 解析器将只接受 JSON 文本。所以是更安全的。
var myObject = JSON.parse(myJSONtext, filter);  
//可选的 filter 参数将遍历每一个value key 值对, 并进行相关的处理。如:
//如
myData = JSON.parse(text, function (key, value) {
 
return key.indexOf('date') >= 0 ? new Date(value) : value;});
 
//stringifier 函数的作用跟 parse 相反, 用来将一个js对象转换为 JSON 文本。
var myJSONText = JSON.stringifier(myObject);
*/ 
</script>