2016-08-13 87 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

function makeJSON_(object, options) { 
    if (options.format == FORMAT_PRETTY) { 
    var jsonString = JSON.stringify(object, null, 4); 
    } else if (options.format == FORMAT_MULTILINE) { 
    var jsonString = Utilities.jsonStringify(object); 
    jsonString = jsonString.replace(/},/gi, '},\n'); 
    jsonString = prettyJSON.replace(/":\[{"/gi, '":\n[{"'); 
    jsonString = prettyJSON.replace(/}\],/gi, '}],\n'); 
    } else { 
    var jsonString = Utilities.jsonStringify(object); 
    } 
    return jsonString; 
} 

這將是很容易設置一個「pre-conver sion「表來創建子字符串JSON,但這不靈活,並且會成爲一個野獸來維護。

我如何JSON.stringify()工作表數據自動創建子字符串?

回答

1

從JSON的版本,你必須給你想去,你可以做以下的一個去 -

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