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

时间:2016-08-21 20:52:46

标签: object google-apps-script

我正在使用key-value调用商业产品的API。不幸的是,生成的对象有几个id对,其中包含来自链接表的name

我可以轻松获取标准值并编写代码以查找相关的name值并将其添加到对象中。我希望将id添加到与原始key相同的位置。但是,当我添加一个新的name时,它会被添加到对象的末尾。

我希望idvar json = {id: 4730183,name: "A A", customer_source_id:123, company: "NE Company"}; 位于同一位置,因此当我将其插入工作表时,列仍将按顺序排列。

这是我的目标:

id

name替换为var json = {id: 4730183,name: "A A", source:"CRM", company: "NE Company"}; 后,这是我想要的对象:

customer_source_id

基本上,我想在对象中找到source并将其替换为indexOf

我无法使用splice和{{1}},因为该对象不是数组。

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

3 个答案:

答案 0 :(得分:2)

快速回答是:

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

更好的答案是:
@Waqar Ahmed是对的。 JavaScript对象是无序的。在您的示例中,“var json”是一个不是JSON的对象。您可以使用JSON.stringify(json)将其设为JSON。但是一旦将JSON解析为对象,它就会变得无序。您不应该使用它来存储有序数据。

答案 1 :(得分:1)

我不确定它是否有效,但您可以遍历这些键并构建一个新的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所说的那样,该对象不用于有序数据。

答案 2 :(得分:0)

你只能在java脚本数组中做他的。不是JSON。 JSON意味着通过键来解决,而不是通过index来解决。将你的json改为

var json ={id: 4730183,name: "A A", customer_source_id:null, items : [] company: "ESI"};

现在您可以使用push数组方法插入项目。

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