Object 用Google Apps脚本替换对象中的键值对

Object 用Google Apps脚本替换对象中的键值对,object,google-apps-script,Object,Google Apps Script,我正在使用Apps脚本调用商业产品的API。不幸的是,结果对象有多个键值对,其中包含链接表中的id 我可以很容易地获得标准值,并编写代码来查找相关的名称值并将其添加到对象中。我更愿意将名称添加到与原始id相同的位置。但是,当我添加一个新的键时,它被添加到对象的末尾 我希望名称与id位于同一位置,因此当我将其插入到工作表中时,列仍将按顺序排列 这是我的目标: var json = {id: 4730183,name: "A A", customer_source_id:123, company:

我正在使用
Apps脚本
调用商业产品的API。不幸的是,结果对象有多个
键值
对,其中包含链接表中的
id

我可以很容易地获得标准值,并编写代码来查找相关的
名称
值并将其添加到对象中。我更愿意将
名称添加到与原始
id
相同的位置。但是,当我添加一个新的
键时,它被添加到对象的末尾

我希望
名称
id
位于同一位置,因此当我将其插入到工作表中时,列仍将按顺序排列

这是我的目标:

var json = {id: 4730183,name: "A A", customer_source_id:123, company: "NE Company"};
这是将
id
替换为
名称后所需的对象:

var json = {id: 4730183,name: "A A", source:"CRM", company: "NE Company"};
基本上,我希望在对象中找到
customer\u source\u id
,并将其替换为
source

我不能使用
indexOf
splice
,因为对象不是数组


最好的方法是什么?我必须先将其转换为数组,然后再转换回来吗?

您只能在java脚本数组中执行此操作。不是JSON。JSON应该通过键而不是索引来寻址

var json ={id: 4730183,name: "A A", customer_source_id:null, items : [] company: "ESI"};
现在可以使用数组的
push
方法插入项

json.items.push('My Item');

一个简单的答案是:

   var obj = {id: 4730183,name: "A A", customer_source_id:123, company: "NE Company"};
   var json = JSON.stringify(obj);
   json = json.replace("customer_source_id","source")
更好的答案是:

@瓦卡尔·艾哈迈德是正确的。JavaScript对象是无序的。在您的示例中,“var json”是一个对象,而不是json。您可以使用
JSON.stringify(JSON)
将其设置为JSON。但是一旦JSON被解析成一个对象,它就再次变得无序。您不应该使用它来存储有序数据。

我不确定它是否有效,但您可以迭代键并构建一个新的json对象,如下所示:

var newjson = {};
for(var key in json){
    if(key === 'customer_source_id'){
       newjson.source = [NEW VALUE TO DISPLAY];
    }else{
       newjson[key] = json[key];
    }
}
json = newjson;

但是,正如@Waqar和@Spencer所说,该对象不用于有序数据。

感谢您抽出时间。我重新措辞了这个问题,因为我认为我的情况没有得到适当的解释。