假设我具有此功能
function(json) { ... }
其中json具有以下结构
{
"Prop1":"some value",
"Array1":[ { "Value":"1" }, { "Value":"2" } ]
}
是否可以以某种方式修改此“ json”参数,使其看起来如下所示,即使在此功能之外?
{
[ { "Value":"1" }, { "Value":"2" } ]
}
换句话说,我希望array1成为此json参数根目录的值。
我不能简单地做
json = json.array; // nor can I do
json.push(something); // since the parameter is an object, not an array
由于参数是通过引用传递的,因此,如果我希望更改在外部可见,则实际上我必须修改其内容。
任何提示都非常感谢!
P.S:在这种情况下,也不会返回适当的值,因为此函数是某些库的事件处理程序,而我影响它的唯一方法是修改此参数。
以后编辑(2018-11-14):
我关于JSON格式的错误。格式应该只是
[ { "Value":"1" }, { "Value":"2" } ]
没有左括号和右括号。
答案 0 :(得分:1)
这不是有效的JSON
{
[ { "Value":"1" }, { "Value":"2" } ]
}
如Nina所指出的那样,它采用对象表示法,并且对象需要键。
但是一个简单的数组是有效的JSON
[ { "Value":"1" }, { "Value":"2" } ]
,它也是JSON字符串的根,如您所暗示的那样。我认为这是因为您使用的库仅吸收Array1
中包含的参数,而您不能提供密钥。
因此,只需JSON.parse(eventstring).Array1
。
这是您要找的吗?
顺便说一下,大多数“裸”的主要数据类型也是有效的JSON,因此它们也是可解析的:
console.dir(JSON.parse(true))
console.dir(JSON.parse(null))
console.dir(JSON.parse(1))
console.dir(JSON.parse("1"))