如何将 javascript 对象转换成 json字符串

JavaScript024

如何将 javascript 对象转换成 json字符串,第1张

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 = 0i <o.lengthi++)

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(/"[^"\\\n\r]*"|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-\x1f\x7f-\x9f]/g

var _meta = {

'\b': '\\b',

'\t': '\\t',

'\n': '\\n',

'\f': '\\f',

'\r': '\\r',

'"' : '\\"',

'\\': '\\\\'

}

})(jQuery)

方法如下:

12345678910 function tojson(arr){  

if(!arr.length) return null 

var i = 0 

len = arr.length,    array = []

for(i<leni++){    

array.push({"projectname":arr[i][0],"projectnumber":arr[i][1]})   }

return JSON.stringify(array) } 

JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。

在1995年时,由Netscape公司的Brendan Eich,在网景导航者浏览器上首次设计实现而成。因为Netscape与Sun合作,Netscape管理层希望它外观看起来像Java,因此取名为JavaScript。但实际上它的语法风格与Self及Scheme较为接近。

为了取得技术优势,微软推出了JScript,CEnvi推出ScriptEase,与JavaScript同样可在浏览器上运行。为了统一规格,因为JavaScript兼容于ECMA标准,因此也称为ECMAScript。