Разбор массива JSON из GET API Call в скрипте приложений Google - PullRequest
0 голосов
/ 04 октября 2018

Я использую вызов 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. В ответ, который я получаю, порядок вывода различен, мне любопытно узнать, почему это так, For-ex.В ответе на исходный вызов первый ключ «доступен», а после анализа данных он «updated_at»

  2. Ключ идентификатора имеет значение скажем 36005656995 висходный ответ, однако после преобразования его в объект javascript с использованием JSON.parse значение идентификатора равно 3.6005656995E10 . Из-за этого преобразования я не могу выполнить постобработку.Я также не смог найти способ явного преобразования его в строку (чтобы число точно сохранялось в исходном ответе) при анализе JSON .

Я смог использовать to.String () для преобразования числа в исходный идентификатор, указанный в ответе, однако мне все еще интересно узнать ответ на следующий запрос:

Каксохранить значение идентификатора из исходного ответа, не преобразовывая его в число с плавающей запятой или long

Надеюсь, с запросом все было понятно, заранее спасибо за прохождение длинного запроса.

1 Ответ

0 голосов
/ 04 октября 2018

Когда вы используете JSON.parse(), строка полезной нагрузки преобразуется в массив объектов.Порядок элементов в массиве верхнего уровня будет сохранен.Однако каждый элемент массива является объектом, и порядок свойств этих объектов не гарантируется, и при этом это не обязательно, поскольку вы будете ссылаться на эти свойства по имени (используя либо точечную запись, либо поиск в скобках).

Идентификационный ключ в порядке, он просто представлен в научной нотации, которая является стандартной для больших чисел.Если вам нужно число в чистом десятичном формате в виде строки, используйте метод toFixed() для его преобразования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...