2016-08-21 35 views
1

我正在使用Apps Script撥打商業產品的API調用。不幸的是,生成的對象有幾個key-value對,它們包含鏈接表中的id用Google Apps腳本替換對象中的鍵值對

我可以很容易地獲得標準值並編寫代碼來查找相關的name值並將其添加到對象中。我寧願在與原始id相同的位置添加name。但是,當我添加新的key時,它會添加到對象的末尾。

我想name在與id相同的位置,所以當我將它插入到工作表中時,這些列仍然是有序的。

這是我的目標:

var json = {id: 4730183,name: "A A", customer_source_id:123, company: "NE Company"}; 

這與name更換id後,我想要的對象:

var json = {id: 4730183,name: "A A", source:"CRM", company: "NE Company"}; 

基本上,我想找到的對象customer_source_id,取而代之的是source。我不能使用indexOfsplice因爲對象不是數組。

這樣做的最好方法是什麼?我必須先將它轉換爲數組,然後再返回嗎?

回答

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說,對象不是用於有序數據。

0

你可以在java腳本數組中完成他的操作。不在JSON中。 JSON是指通過鍵,而不是index.Change您的JSON致函

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

現在你可以插入使用數組的push方法的項目。

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

謝謝你的時間。我重新解釋了這個問題,因爲我認爲我的情況沒有得到妥善解釋。 – davids

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艾哈邁德是正確的。 JavaScript對象是無序的。在你的例子中「var json」是一個不是JSON的對象。你可以使用JSON與JSON.stringify(json)。但是一旦JSON被解析成一個對象,它就會變得無序。你不應該用它來存儲有序的數據。

相關問題