Inc*_*ito 79 javascript jquery json
我不需要使用json字符串并使用$ .parseJSON,而是将对象存储在变量中,并将其存储为表示json的字符串.
(我正在处理的库需要格式错误的json类型,所以我需要弄乱它以使其工作.)
最好的方法是什么?
Ini*_*sdr 84
编辑:你应该使用道格拉斯克罗克福德的json2.js库,而不是实现下面的代码.它提供了一些额外的功能和更好/更旧的浏览器支持.
从以下网址获取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"}'
Run Code Online (Sandbox Code Playgroud)
代码来自:http://www.sitepoint.com/blogs/2009/08/19/javascript-json-serialization/
小智 38
我用
$.param(jsonObj)
Run Code Online (Sandbox Code Playgroud)
这让我得到了字符串.
Ale*_*fee 35
目前大多数浏览器都有本机JSON对象,其中包括parse和stringify方法.所以试着JSON.stringify({})看看你是否得到了"{}".您甚至可以传入参数来过滤掉键或进行漂亮的打印,例如JSON.stringify({a:1,b:2}, null, 2)在每个键的前面放置换行符和2个空格.
JSON.stringify({a:1,b:2}, null, 2)
Run Code Online (Sandbox Code Playgroud)
给
"{\n \"a\": 1,\n \"b\": 2\n}"
Run Code Online (Sandbox Code Playgroud)
打印为
{
"a": 1,
"b": 2
}
Run Code Online (Sandbox Code Playgroud)
至于弄乱你问题的一部分,请使用第二个参数.来自http://www.javascriptkit.com/jsref/json.shtml:
replacer参数可以是函数或String/Numbers数组.它逐步执行JSON对象中的每个成员,以便您决定应将每个成员更改为哪个值.作为一个功能,它可以返回:
- 数字,字符串或布尔值,用返回的属性替换属性的原始值.
- 一个对象,然后被序列化然后返回.不允许使用对象方法或函数,而是将其删除.
- Null,导致属性被删除.
作为一个数组,它内部定义的值对应于JSON对象中的属性名称,这些属性在转换为JSON对象时应该保留.
| 归档时间: |
|
| 查看次数: |
210726 次 |
| 最近记录: |