Javascript 将根JSON对象值设置为数组

Javascript 将根JSON对象值设置为数组,javascript,arrays,Javascript,Arrays,假设我有这个函数 function(json) { ... } 其中json具有以下结构 { "Prop1":"some value", "Array1":[ { "Value":"1" }, { "Value":"2" } ] } 是否有可能修改此“json”参数,使其如下所示,甚至在该函数之外 { [ { "Value":"1" }, { "Value":"2" } ] } 换句话说,我希望array1成为这个json参数的根的值 我不能这么做 json =

假设我有这个函数

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
因为参数是通过引用传递的,如果我希望更改在外部可见,我实际上必须修改它的内容

任何提示都非常感谢

注意:在这种情况下,返回适当的值也不合适,因为这个函数是某个库的事件处理程序,我影响它的唯一方法是修改这个参数


稍后编辑(2018-11-14):

我关于JSON格式的错误。格式应该是

[ { "Value":"1" }, { "Value":"2" } ]
没有开始和结束括号。

这是无效的

{
    [ { "Value":"1" }, { "Value":"2" } ]
}
[ { "Value":"1" }, { "Value":"2" } ]
正如尼娜指出的,它是用对象符号表示的,对象需要一个键

但普通数组是有效的JSON

{
    [ { "Value":"1" }, { "Value":"2" } ]
}
[ { "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”))
一个对象需要一个键。“JSON=JSON.Array1;”@bhspencer有什么问题?只要更改本地名称以指向一个新数组,它就不会更改被引用的对象,而OP似乎需要这个对象。在函数之外,更改不会产生任何影响。哦,好的。这听起来像是一个令人不快的副作用。谢谢你和尼娜的关键观察。我已经在问题中纠正了这一方面。问题是,如何将
json.Array1
json.parse(eventstring).Array1
的结果分配给json参数?如问题中所述,我不能做
json=somethingElse因为这不会对调用方发送的实例生效。我必须修改通过该参数给出的引用。@CiprianVilcan我不确定我是否遵循。听起来问题是“我需要改变这个东西,但我不能改变它,我该怎么做?”我在你的库与代码交互的方式中遗漏了一些东西-你能发布实际的代码吗?顺便说一句,字符串不是有效的JSON。在您的示例中,它被转换为整数。