2016-08-21 10 views
1

Apps Scriptを使用している商品のAPIを呼び出しています。残念なことに、結果として得られるオブジェクトには、リンクテーブルのidを含むいくつかのkey-valueペアがあります。オブジェクト内のKey-ValueペアをGoogle Apps Scriptに置き換えます。

私は簡単に標準値を取得し、関連するname値を見つけてオブジェクトに追加するコードを記述することができます。元のidと同じ場所にnameを追加することをお勧めします。しかし、新しいkeyを追加すると、オブジェクトの最後に追加されます。

idと同じ場所にnameが必要です。シートに挿入すると、列は順番どおりになります。

これは私の物である:

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

これはnameidを交換した後、私の目的のオブジェクトです:

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

基本的に、私はオブジェクトでcustomer_source_idを見つけて、それを交換したいですsource

オブジェクトが配列ではないので、私はindexOfspliceを使用することはできません。

これを行うにはどのような方法が最適ですか?それを最初に配列に変換してから、もう一度元に戻す必要がありますか?

答えて

1

私はそれが効率的であるかどうかわからないですが、あなたは、キーを反復処理し、このような新しいJSONオブジェクトを構築することができます:@Waqarと@Spencerがオブジェクトではない、言ったように、

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; 

しかし、順序付けられたデータに使用されます。

0

彼はJavaスクリプト配列でしかできません。 JSONではなくJSONは、今、あなたは、配列のpush方法を使用してアイテムを挿入することができ

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

にキーではなく、index.ChangeあなたのJSONによって対処されることを意図しています。

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.stringify(json)でJSONにすることができます。しかし、JSONがオブジェクトに解析されると、再び順序付けされなくなります。順序付きデータの格納には使用しないでください。

関連する問題