而不是使用 JSON 字符串和 $。ParseJSON,我需要将我的对象存储在一个变量中,作为表示 JSON 的字符串。
(我正在处理的一个库需要一个畸形的 JSON 类型,因此我需要处理它以使其工作。)
最好的办法是什么?
您可以将 JSON 解析为一个对象,然后从 ajavscript 对象创建畸形的 JSON。不过,这可能不是最好的性能。
否则,如果您只需要对字符串进行非常小的更改,只需将其视为字符串,并使用标准 javascript 对其进行处理。
编辑: 您应该从道格拉斯·克罗克福特中使用 json2.js 库,而不是实现下面的代码。它提供了一些额外的功能和更好/更老的浏览器支持。
从 https://github.com/douglascrockford/JSON-js获取 json2.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)
这样我就能拿到绳子了。
我发现最好的方法是使用 JQuery JSON
现在大多数浏览器都有一个原生的 JSON对象,其中包括 parse和 stringify方法。所以只要尝试 JSON.stringify({}),看看你是否得到 "{}"。您甚至可以传入参数来过滤出键或进行漂亮的打印,例如 JSON.stringify({a:1,b:2}, null, 2)在每个键的前面放置一个换行符和两个空格。
JSON
parse
stringify
JSON.stringify({})
"{}"
JSON.stringify({a:1,b:2}, null, 2)
给予
"{\n \"a\": 1,\n \"b\": 2\n}"
印刷成
{ "a": 1, "b": 2 }
至于你的问题的混淆部分,使用第二个参数:
替换参数可以是一个函数,也可以是 字符串/数字。它逐步遍历 JSON 对象中的每个成员,以便 让您决定每个成员应该更改为什么值 返回的函数: 用返回值替换属性原始值的数字、字符串或布尔值。 序列化后返回的对象。不允许使用对象方法或函数,而是将其移除。 空,这将导致删除该属性。 作为数组,其中定义的值对应于 JSON 对象中应该保留的属性 转换成 JSON 对象。
替换参数可以是一个函数,也可以是 字符串/数字。它逐步遍历 JSON 对象中的每个成员,以便 让您决定每个成员应该更改为什么值 返回的函数:
作为数组,其中定义的值对应于 JSON 对象中应该保留的属性 转换成 JSON 对象。