APIによって提供されるオブジェクトにアクセスしようとしているときに混乱しています。使用さRESTful APIからオブジェクトのこのプロパティにアクセスするにはどうすればよいですか?
API:CloudFlareのV4のAPIが使用されている
コンセプトで提供されています:
私は同じオブジェクトを受け取りますAPIにアクセスする際にmyObjectを使用しますが、私がオブジェクトを理解できるようにするために、私はソースコードを含んでいます下にアクセスしてください。
かなり整形を持つオブジェクト
{
"result": [{
"id": "e9a821b6379bd22539226a4cc6956144",
"mode": "challenge",
"allowed_modes": ["block", "challenge", "whitelist", "js_challenge"],
"status": "active",
"notes": "BY API",
"scope": {
"id": "981969ce21909a61b62905c585ec9aaa",
"email": "[email protected]",
"type": "user"
},
"configuration": {
"value": "AD",
"target": "country"
},
"created_on": "2017-08-06T17:05:19.126546Z",
"modified_on": "2017-08-06T17:05:19.126546Z"
}],
"result_info": {
"page": 1,
"per_page": 1,
"total_pages": 251,
"count": 1,
"total_count": 251
},
"success": true,
"errors": [],
"messages": []
}
以下のコードは、予想されるものです問題のない数251を返します。実際の使用では
var myObject = {"result":[{"id":"e9a821b6379bd22539226a4cc6956144","mode":"challenge","allowed_modes":["block","challenge","whitelist","js_challenge"],"status":"active","notes":"BY API","scope":{"id":"981969ce21909a61b62905c585ec9aaa","email":"[email protected]","type":"user"},"configuration":{"value":"AD","target":"country"},"created_on":"2017-08-06T17:05:19.126546Z","modified_on":"2017-08-06T17:05:19.126546Z"}],"result_info":{"page":1,"per_page":1,"total_pages":251,"count":1,"total_count":251},"success":true,"errors":[],"messages":[]}
console.log(myObject["result_info"]["total_pages"])
:このスクリプトは、ノードで実行されていましたさ
は、configureモジュールは、APIキーとスタッフを(彼らがうまくいけば明白な理由のために露出してはならない)が含まれています。
コンセプトコードconsole.log(body["result_info"]["total_pages"]);
とは異なり、エラーはエラーを返します。
/Documents/Coding/cloudflare-scripts/remove-user-level-firewall-rules.js:44
console.log(body["result_info"]["total_pages"]);
^
TypeError: Cannot read property 'total_pages' of undefined
at Request._callback (/Users/nathanielsuchy/Documents/Coding/cloudflare-scripts/remove-user-level-firewall-rules.js:44:36)
at Request.self.callback (/Users/nathanielsuchy/node_modules/request/request.js:188:22)
at emitTwo (events.js:125:13)
at Request.emit (events.js:213:7)
at Request.<anonymous> (/Users/nathanielsuchy/node_modules/request/request.js:1171:10)
at emitOne (events.js:115:13)
at Request.emit (events.js:210:7)
at IncomingMessage.<anonymous> (/Users/nathanielsuchy/node_modules/request/request.js:1091:12)
at Object.onceWrapper (events.js:314:30)
at emitNone (events.js:110:20)
APIのオブジェクト出力から直接ページ数にアクセスできるようにこのスクリプトを修正するにはどうすればよいですか?
'body'だけを記録すると、正当なJSONデータがAPIサーバーから返されたことがわかりますか?それとも、それはあなたが探している価値がない、偽の/欠けていますか? – Treebasher
@Treebasher私はちょうどボディを記録する場合、私は期待されるオブジェクトを取得します。しかし、total_pagesプロパティにアクセスしようとすると、エラーメッセージが表示されます。これは、コンセプトコードがほぼ同じオブジェクト、同じフォーマットであるという私の証明がエラーを出さず、期待値を返すので意味をなさない。 –
JSON.parse(body) 'を使う必要があるかもしれないと思います。 JSONとして表されるJavaScriptオブジェクトではなく、HTTPリクエストから返された文字列を取得しています。したがって、おそらく1つに解析する必要があります。 – Treebasher