2016-08-13 9 views
1

Apps Scriptを使用して、シート内の値をマルチレベルJSONに変換しようとしています。Googleシートを複数レベルのJSON配列として変換

このような単一レベルJSONに値を変換するのは簡単です:

[{ 
    "name": "Bob Jones", 
    "phone": "555-555-5555", 
    "street": "123 Somewhere St.", 
    "city": "Nowhere", 
    "state": "ID", 
    "postal": 45632, 
    "country": "USA" 
}] 

しかし、私が欲しいもの、これは次のとおりです。ここで

[{ 
    "name": "Bob Jones", 
    "phone": "555-555-5555", 
    "address": { 
    "street": "123 Somewhere St.", 
    "city": "Nowhere", 
    "state": "ID", 
    "postal": 45632, 
    "country": "USA" 
    } 
}] 

は、フォーマットに使用されるコードでありますJSON

「プリコンバーター」 sion "シートを使用してJSON部分文字列を作成しますが、これは柔軟性がなく、維持する獣となります。

JSON.stringify()サブストリングを自動的に作成するシートデータはどうすればよいですか?あなたに行きたいものにあなたが持っているJSONのバージョンから行くために

答えて

1

は、次の操作を行うことができます -

var json = [{ 
    "name": "Bob Jones", 
    "phone": "555-555-5555", 
    "street": "123 Somewhere St.", 
    "city": "Nowhere", 
    "state": "ID", 
    "postal": 45632, 
    "country": "USA" 
}] 

for (var i=0; i < json.length; i++){ 
    var currentObj = json[i]; 
    // make a temporary address object 
    var address = {}; 
    // copy all the attributes over to the temp object 
    address.street = currentObj.street; 
    address.city = currentObj.city; 
    address.state = currentObj.state; 
    address.postal = currentObj.postal; 
    address.country = currentObj.country; 
    // add address to the original object 
    currentObj.address = address; 
    // get rid of the following attributes from parent 
    delete currentObj.street; 
    delete currentObj.city; 
    delete currentObj.state; 
    delete currentObj.postal; 
    delete currentObj.country; 
} 


console.log(json); 

文字列で物事を交換するよりもはるかに簡単。

http://codepen.io/anon/pen/XKOrXa

+0

私は最後の変更を提案するつもりでした。できます! – davids

+0

jqueryを使用しないようにコードを修正しました。これはうまくいきました。 – charsi

関連する問題