これはそれほど複雑なオブジェクトではありません。そして、文字列に変換されるまでJSONではありません。今のところ、それは単なる昔ながらのJSオブジェクトと配列です。
それを要素に分解すると、次のようになります。
var requestData = {};
requestData.__batchRequests = [];
requestData.__batchRequests[0] = {};
requestData.__batchRequests[0].__changeRequests = [];
requestData.__batchRequests[0].__changeRequests[0] = {};
requestData.__batchRequests[0].__changeRequests[0].requestUri = "Customers";
requestData.__batchRequests[0].__changeRequests[0].method = "POST";
requestData.__batchRequests[0].__changeRequests[0].headers = { "Content-ID" : "1" };
requestData.__batchRequests[0].__changeRequests[0].data = {};
リピートは別として、あなたは何を見ますか?個人的には、それ__changeRequests[0]
は次のような単純なオブジェクトだと思います。
var changeRequest = {
requestUri : "Customers",
method : "POST",
headers : { "Content-ID" : "1" },
data : {}
};
また、それを変更要求の配列にプッシュできることもわかります。
requestData.__batchRequests[0].__changeRequests.push(changeRequest);
右?
また、変数が配列に追加したばかりの変数を指していることもわかっていchangeRequest
ます。オブジェクトで変更したものはすべて、配列のオブジェクトへの参照でも変更されたものとして表示されます。
changeRequest.data.CustomerName = "Bob";
changeRequest.data.CustomerID = "204";
requestData.__/*...*/changeRequests[0].data.CustomerName; // Bob
では、ヘルパー関数を自分で作成してみませんか?
function extend (obj, additions) {
var key;
for (key in obj) { if (additions.hasOwnProperty(key)) {
obj[key] = additions[key];
}
}
function makeChangeRequest (url, method, headers, data) {
var request = {
requestUri : url,
method : method,
headers : {},
data : {}
};
extend(request.headers, headers);
extend(request.data, data);
return request;
}
function getBatch (num) { return requestData.__batchRequests[num]; }
var changeReq = makeChangeRequest("Customers",
"POST",
{ "Content-ID" : "1" },
{ CustomerName : "Bob", CustomerID : "2012" });
var batch = getBatch(0);
batch.__changeRequests.push(changeReq);
後でさらにデータを追加する場合changeReq.data
:
extend(changeReq.data, { Address : "33 Nowhere Rd.", City : "Splitsville" });