jquery json的string?

而不是从一个JSONstring,并使用$ .parseJSON,我需要把我的对象,并将其存储在一个variables作为string表示JSON。

(我正在处理的库预计会有一个格式错误的jsontypes,所以我需要解决它才能使其正常工作。)

什么是最好的方法来做到这一点?

编辑:你应该使用Douglas Crockford的json2.js库,而不是实现下面的代码。 它提供了一些额外的function和更好的/旧的浏览器支持。

从以下位置获取json2.js文件: https : //github.com/douglascrockford/JSON-js


// implement JSON.stringify serialization JSON.stringify = JSON.stringify || function (obj) { var t = typeof (obj); if (t != "object" || obj === null) { // simple data type if (t == "string") obj = '"'+obj+'"'; return String(obj); } else { // recurse array or object var n, v, json = [], arr = (obj && obj.constructor == Array); for (n in obj) { v = obj[n]; t = typeof(v); if (t == "string") v = '"'+v+'"'; else if (t == "object" && v !== null) v = JSON.stringify(v); json.push((arr ? "" : '"' + n + '":') + String(v)); } return (arr ? "[" : "{") + String(json) + (arr ? "]" : "}"); } }; var tmp = {one: 1, two: "2"}; JSON.stringify(tmp); // '{"one":1,"two":"2"}' 

代码来自: http : //www.sitepoint.com/blogs/2009/08/19/javascript-json-serialization/

我用

 $.param(jsonObj) 

这让我的string。

现在大多数浏览器都有一个本地JSON对象,其中包括parsestringify方法。 所以,只要尝试JSON.stringify({}) ,看看你是否"{}" 。 你甚至可以传入参数来过滤掉键或者进行漂亮的打印,比如JSON.stringify({a:1,b:2}, null, 2)在每个键的前面放置一个换行符和2个空格。

 JSON.stringify({a:1,b:2}, null, 2) 

 "{\n \"a\": 1,\n \"b\": 2\n}" 

打印为

 { "a": 1, "b": 2 } 

至于你的问题的一部分搞乱,使用第二个参数。 来自http://www.javascriptkit.com/jsref/json.shtml

replacer参数可以是一个函数,也可以是一个String / Numbers数组。 它遍历JSON对象中的每个成员,让您决定每个成员应该更改的值。 作为一个函数,它可以返回:

  • 数字,string或布尔值,用返回值replace属性的原始值。
  • 一个对象,然后被序列化,然后返回。 对象方法或函数不被允许,而是被删除。
  • 空,导致属性被删除。

作为一个数组,其内部定义的值与JSON对象内部的属性名称相对应,这些属性在转换为JSON对象时应该保留。

我发现的最好的方法是使用jQuery JSON

你可以parsingJSON到一个对象,然后从ajavscript对象创build畸形的JSON。 这可能不是最好的performance,寿。

否则,如果只需要对string进行非常小的修改,就把它当作一个string,然后用标准的javascript对其进行修改。