Laravel не может вернуть вложенные данные из Guzzle с помощью json_decode - PullRequest
0 голосов
/ 31 мая 2018

У меня проблема с доступом к данным, вложенным в массив.

Вот пример моего запроса Guzzle и способа его декодирования и возврата:

  $raw_response = $client->request('GET', 'https://api.com/endpoint');

  $body = $raw_response->getBody();
  $body_content = json_decode($body, true);

  $body_collection = collect($body_content);

  return $body_collection[0]['instances'][0]['spec'];

Однако, к сожалению, это не сработает, если я верну его без ['spec']:

return $body_collection[0]['instances'][0]

Я действительно верну некоторые данные:

{
    "platform": {
        "browserName": "Electron",
        "browserVersion": "59.0.3071.115",
        "osCpus": null,
        "osMemory": null,
        "osName": "linux",
        "osVersion": "Debian - 8.10",
        "osVersionFormatted": "Debian - 8.10"
    },
    "createdAt": "2018-05-30T02:05:44.648Z",
    "claimedAt": null,
    "completedAt": "2018-05-30T02:05:59.694Z",
    "error": null,
    "failed": 0,
    "id": "d941be0c-27a7-41e9-b26f-bdaaedc494be",
    "machineId": null,
    "passed": 1,
    "pending": 0,
    "status": "passed",
    "stdout": null,
    "skipped": null,
    "spec": "/root/app/cypress/integration/api/intent-match_spec.js",
    "wallClockDuration": 2785,
    "wallClockStartedAt": null,
    "wallClockEndedAt": null,
    "videos": null,
    "screenshots": null
}

Однако, когда я пытаюсь получить доступ кspec элемент ничего не возвращает в Почтальоне.Если я дам дамп так:

dd($body_collection[0]['instances'][0]['spec']);

Тогда данные будут возвращены, когда я использую Почтальон: "/root/app/cypress/integration/api/intent-match_spec.js"

Вот дамп всего $body_content, я установилмного данных, как ноль, так как они не могут быть разделены.Также родительский массив обычно возвращает 30 других массивов, но я сократил это.

array:30 [
  0 => array:26 [
    "ci" => array:3 [
      "url" => null
      "provider" => null
      "buildNumber" => "15718"
    ]
    "commit" => array:6 [
      "authorName" => null
      "authorEmail" => null
      "message" => null
      "branch" => "master"
      "sha" => null
      "url" => null
    ]
    "id" => null
    "projectId" => null
    "projectName" => null
    "buildNumber" => 39399
    "cypressVersion" => "2.1.0"
    "totalPassed" => 1
    "totalFailed" => 0
    "totalPending" => 0
    "totalSkipped" => null
    "totalDuration" => 15228
    "completedAt" => "2018-05-30T02:05:59.727Z"
    "createdAt" => "2018-05-30T02:05:44.499Z"
    "updatedAt" => "2018-05-30T02:05:59.727Z"
    "status" => "passed"
    "specPattern" => null
    "runUrl" => null
    "projectUrl" => null
    "specIsolation" => false
    "loadBalancing" => false
    "instances" => array:1 [
      0 => array:19 [
        "platform" => array:7 [
          "browserName" => "Electron"
          "browserVersion" => "59.0.3071.115"
          "osCpus" => null
          "osMemory" => null
          "osName" => "linux"
          "osVersion" => "Debian - 8.10"
          "osVersionFormatted" => "Debian - 8.10"
        ]
        "createdAt" => "2018-05-30T02:05:44.648Z"
        "claimedAt" => null
        "completedAt" => "2018-05-30T02:05:59.694Z"
        "error" => null
        "failed" => 0
        "id" => "d941be0c-27a7-41e9-b26f-bdaaedc494be"
        "machineId" => null
        "passed" => 1
        "pending" => 0
        "status" => "passed"
        "stdout" => null
        "skipped" => null
        "spec" => "/root/app/cypress/integration/api/intent-match_spec.js"
        "wallClockDuration" => 2785
        "wallClockStartedAt" => null
        "wallClockEndedAt" => null
        "videos" => null
        "screenshots" => null
      ]
    ]
    "failedTests" => null
    "orgId" => null
    "orgName" => null
    "orgDefault" => false
  ]
]

Можете ли вы вспомнить причину, по которой это может происходить?

...