我看到一些例子,对于json对象的生成都是先拼凑成一段string,然后用 eval()函数生成json对象。但是如果我一开始有一个json对象,var example =
{
x:2
}可否改变为:var example =
{
x:2,
y:1
}
//或者如下之类的?
var example =
{
x:2,
z:[{abc:"deg"},{ifb:"asdf"}]
}
能不能这样直接修改 json 对象?
{
x:2
}可否改变为:var example =
{
x:2,
y:1
}
//或者如下之类的?
var example =
{
x:2,
z:[{abc:"deg"},{ifb:"asdf"}]
}
能不能这样直接修改 json 对象?
function json2str(o) {
var arr = [];
var fmt = function(s) {
if (typeof s == 'object' && s != null) return json2str(s);
return /^(string|number)$/.test(typeof s) ? "'" + s + "'" : s;
}
for (var i in o) arr.push("'" + i + "':" + fmt(o[i]));
return '{' + arr.join(',') + '}';
}
var newjson = json2str(orijson).substr(0,json2str(orijson).length-1);
newjson+=",y:2,z:{a:3,b:4}"+"}";
window.onload=function(){
alert(eval("("+newjson+")").x);
alert(eval("("+newjson+")").y);
alert(eval("("+newjson+")").z.a);
}
{
x:1,
y:[]
}
var aa =
{
bb:123
}test["z"] = "adfd";
test["y"][0] = aa;//则 test将变成:
var test =
{
x:1,
y:[{bb:123}],
z:adfd
}
a1.abc='deg';
a.push(a1);
var a2={};
a2.ifb='asdf';
a.push(a2);
example.z=a;
比较官方的javascript的规范中提到:eval 是恶魔,eval是JavaScript中最容易被滥用的方法。避免使用它。至于ajax操作返回的json字符串,可以使用官方网站提供的解析器json_parse.js运行。
http://www.json.org/json_parse.js