簡體   English   中英

從Google Apps腳本中的GET API調用解析JSON數組

[英]Parse a JSON Array from a GET API Call in google apps script

我使用對端點的GET API調用並獲得如下輸出:

  [
    {
        "available": false,
        "occasional": false,
        "id": 36005656995,
        "signature": "<div dir=\"ltr\"><p><br></p>\n</div>",
        "ticket_scope": 1,
        "created_at": "2018-06-20T10:13:25Z",
        "updated_at": "2018-08-29T06:37:21Z",
        "available_since": null,
        "contact": {
            "active": false,
            "email": "abcd@clasher.com",
            "job_title": null,
            "language": "en",
            "last_login_at": "2018-08-15T05:50:27Z",
            "mobile": null,
            "name": "abcd@clasher.com",
            "phone": "00903030333",
            "time_zone": "Chennai",
            "created_at": "2018-03-19T01:56:53Z",
            "updated_at": "2018-09-03T04:41:59Z"
        }
    },
    {
        "available": false,
        "occasional": true,
        "id": 36004999676,
        "signature": "<div dir=\"ltr\"><p><br></p>\n</div>",
        "ticket_scope": 1,
        "created_at": "2018-03-07T05:47:43Z",
        "updated_at": "2018-06-21T12:45:41Z",
        "available_since": null,
        "contact": {
            "active": true,
            "email": "sab@clashuniversal.com",
            "job_title": null,
            "language": "en",
            "last_login_at": "2018-03-07T05:49:16Z",
            "mobile": null,
            "name": "Sample Agent",
            "phone": null,
            "time_zone": "Chennai",
            "created_at": "2018-03-07T05:47:43Z",
            "updated_at": "2018-05-28T10:39:39Z"
        }
    },
    {
        "available": false,
        "occasional": false,
        "id": 36004979341,
        "signature": "<div dir=\"ltr\"><p>Regards<br>Clashuniversal</p></div>",
        "ticket_scope": 1,
        "created_at": "2018-03-06T15:27:59Z",
        "updated_at": "2018-10-02T19:51:12Z",
        "available_since": "2018-08-10T14:10:09Z",
        "contact": {
            "active": true,
            "email": "prasadclasher@gmail.com",
            "job_title": null,
            "language": "en",
            "last_login_at": "2018-09-30T06:02:21Z",
            "mobile": null,
            "name": "Subramania Prasad",
            "phone": "9999999998",
            "time_zone": "Chennai",
            "created_at": "2018-03-06T15:27:59Z",
            "updated_at": "2018-09-20T08:43:18Z"
        }
    }
]

請注意,響應本身就是JSON數組。

我想要做的是將其解析為Javascript對象,以便可以對此數據進行一些處理。

為了解析此數據,我使用以下代碼:

test_response = UrlFetchApp.fetch(domain,obj);
test_resp_string = test_response.getContentText();
object_1 = JSON.parse(test_resp_string);

上面的代碼期望我想分別訪問響應的每個對象,例如,當我執行Logger.log(object_1 [0])應該給我返回的響應的第一個元素時,如下所示:

{
        "available": false,
        "occasional": false,
        "id": 36005656995,
        "signature": "<div dir=\"ltr\"><p><br></p>\n</div>",
        "ticket_scope": 1,
        "created_at": "2018-06-20T10:13:25Z",
        "updated_at": "2018-08-29T06:37:21Z",
        "available_since": null,
        "contact": {
            "active": false,
            "email": "abcd@clasher.com",
            "job_title": null,
            "language": "en",
            "last_login_at": "2018-08-15T05:50:27Z",
            "mobile": null,
            "name": "abcd@clasher.com",
            "phone": "00903030333",
            "time_zone": "Chennai",
            "created_at": "2018-03-19T01:56:53Z",
            "updated_at": "2018-09-03T04:41:59Z"
        }
    }

但是,當我執行Logger.log(object_1 [0])時,得到以下響應:

 {
  updated_at=2018-08-29T06:37:21Z, 
  signature=<div dir="ltr"><p><br></p></div>, 
  ticket_scope=1, 
  contact={
  last_login_at=2018-08-15T05:50:27Z, 
  updated_at=2018-09-03T04:41:59Z, 
  phone=00903030333, 
  mobile=null, 
  name=abcd@clasher.com, 
  active=false, 
  created_at=2018-03-19T01:56:53Z, 
  language=en, 
  time_zone=Chennai, 
  job_title=null, 
  email=abcd@clasher.com}, 
  available=false, 
  created_at=2018-06-20T10:13:25Z, 
  occasional=false, 
  id=3.6005656995E10, 
  available_since=null
}

您將能夠注意到預期和我得到的之間的以下差異:

  1. 在我得到輸出順序變化的響應中,我很好奇知道為什么如此。 在原始呼叫的響應中,第一個鍵為“ available”,而在解析數據后為“ updated_at”

  2. id關鍵字在原始響應中的值為36005656995 ,但是在使用JSON.parse將其轉換為javascript對象后,id值為3.6005656995E10 由於這種轉換,我無法進行后期處理。 我也找不到在解析JSON時將其顯式轉換為字符串的方法(這樣,數字將保留為原始響應中的形式)

我能夠使用to.String()將數字轉換為響應中看到的原始ID,但是我仍然很想知道以下查詢的答案:

如何保留原始響應中的ID值而不將其轉換為float或long

希望我對查詢清楚,在此先感謝您通過冗長的查詢。

使用JSON.parse() ,有效負載字符串將轉換為對象數組。 頂層數組中項目的順序將保留。 但是,每個數組項都是一個對象,並且不能保證這些對象上的屬性的順序,也不一定是這樣,因為您將通過名稱(使用點符號或帶括號的查找)引用這些屬性。

id鍵很好,它只是用科學記數法表示,這是數字的標准。 如果需要純十進制格式的數字作為字符串,請使用toFixed()方法進行轉換。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM