将根JSON对象值设置为数组

时间:2018-11-13 21:24:44

标签: javascript arrays

假设我具有此功能

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" } ]

没有左括号和右括号。

1 个答案:

答案 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"))