JSON.parse (myArray) завершается ошибкой - PullRequest
0 голосов
/ 25 сентября 2018

У меня есть вызов API, который возвращает данные в следующем формате:

[
  {
    "children": null,
    "entityDefinition": {
      "id": 0,
      "version": 0,
      "entityType": "APPLICATION_COMPONENT_NODE",
      "entityId": 8280,
      "prettyToString": null
    },
    "state": "NORMAL",
    "nodesPerformanceStateSummary": null,
    "appServerAgentAvailability": {
      "entityId": 8280,
      "entityType": "APPLICATION_COMPONENT_NODE",
      "latest": true,
      "percentage": 100,
      "metricId": 41540
    },
    "machineAgentAvailability": {
      "entityId": 8280,
      "entityType": "APPLICATION_COMPONENT_NODE",
      "latest": true,
      "percentage": 100,
      "metricId": 41548
    }
  }
],
[
  {
    "children": null,
    "entityDefinition": {
      "id": 0,
      "version": 0,
      "entityType": "APPLICATION_COMPONENT_NODE",
      "entityId": 20552,
      "prettyToString": null
    },
    "state": "NORMAL",
    "nodesPerformanceStateSummary": null,
    "appServerAgentAvailability": {
      "entityId": 20552,
      "entityType": "APPLICATION_COMPONENT_NODE",
      "latest": false,
      "percentage": 0,
      "metricId": 41540
    },
    "machineAgentAvailability": {
      "entityId": 20552,
      "entityType": "APPLICATION_COMPONENT_NODE",
      "latest": true,
      "percentage": 100,
      "metricId": 41548
    }
  }
]

Когда я пытаюсь выполнить

JSON.parse(myData).forEach(function(node){
    sails.log.info(node.id);
}

, выдается следующая ошибка:

SyntaxError: Unexpected token , in JSON at position 468
    at JSON.parse (<anonymous>)
    at getListOfAvailableNodes (C:\Users\taaniel.paal\Documents\license-statistics\api\helpers\get-licenses.js:73:14)
    at Request._callback (C:\Users\taaniel.paal\Documents\license-statistics\api\helpers\get-licenses.js:136:30)
    at Request.self.callback (C:\Users\taaniel.paal\Documents\license-statistics\node_modules\request\request.js:185:22)
    at Request.emit (events.js:182:13)
    at Request.EventEmitter.emit (domain.js:442:20)
    at Request.<anonymous> (C:\Users\taaniel.paal\Documents\license-statistics\node_modules\request\request.js:1161:10)
    at Request.emit (events.js:182:13)
    at Request.EventEmitter.emit (domain.js:442:20)
    at IncomingMessage.<anonymous> (C:\Users\taaniel.paal\Documents\license-statistics\node_modules\request\request.js:1083:12)
    at Object.onceWrapper (events.js:273:13)
    at IncomingMessage.emit (events.js:187:15)
    at IncomingMessage.EventEmitter.emit (domain.js:442:20)
    at endReadableNT (_stream_readable.js:1090:12)
    at process._tickCallback (internal/process/next_tick.js:63:19)

Это работает, когда массив имеет только один элемент, но когда их больше, происходит сбой.Кто-то, возможно, знает обходной путь для этого?Я имею в виду, JSON.parse () должен распознавать данные типа массива, или проблема в том, что нет корневого элемента, который содержит этот массив, например, {"node": ["x", "x", "x"]}?Я немного сбит с толку и хотел бы получить представление от более умного человека:)

Заранее спасибо.

1 Ответ

0 голосов
/ 25 сентября 2018

Это неверный JSON, у вас есть два корневых элемента массива.Ответ сервера должен быть исправлен.В настоящее время у вас есть подобное:

[
"first"
],
[
"second"
]

Должно быть:

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