Я столкнулся с этим странным поведением из выборки.JS Fetch Анализ JSON изменяет объект
Первый взгляд на этот скриншот длин (корректных) и реальных структур: console screenshot
Рассмотрим следующий JSON ответ от сервера, где likes
массив явно содержит один объект, а comments
массив содержит два :
{
"status":"success",
"payload":{
"272699880986":{
"likes":[
{
"createdTime":"2016-11-07T04:41:21.000Z",
"senderId":10209615042475034,
"senderName":"Alfredo Re",
"likes":1
}
],
"comments":[
{
"createdTime":"2016-11-07T04:41:54.000Z",
"senderId":1021426764639564,
"senderName":"Alfredo J. Re",
"comments":1
},
{
"createdTime":"2016-11-07T04:41:24.000Z",
"senderId":10209615042475034,
"senderName":"Alfredo Re",
"comments":1
}
]
}
}
}
Теперь, проходя этот ответ через весь response.json()
, как это:
fetch('http://example.com/entries.json', {
method: 'GET',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
...authKeys,
}
})
.then(response => {
switch(response.status){
case 200:
console.log('status 200', response)
return response.json()
}
})
.then(json => {
console.log('parsed response')
console.log(json)
})
Получает мне следующий результат:
{
"status":"success",
"payload":{
"272699880986":{
"likes":[
{
"createdTime":"2016-11-07T04:41:54.000Z",
"senderId":1021426764639564,
"senderName":"Alfredo J. Re",
"likes": 1,
"comments":1
},
{
"createdTime":"2016-11-07T04:41:24.000Z",
"senderId":10209615042475034,
"senderName":"Alfredo Re",
"comments":1
}
],
"comments":[
{
"createdTime":"2016-11-07T04:41:54.000Z",
"senderId":1021426764639564,
"senderName":"Alfredo J. Re",
"comments":1
},
{
"createdTime":"2016-11-07T04:41:24.000Z",
"senderId":10209615042475034,
"senderName":"Alfredo Re",
"comments":1
}
]
}
}
}
посмотреть, как он перепутал likes
и comments
коллекции. Сейчас это сводит меня с ума. Я что-то упускаю?
UPDATE
Вот a gif showing chrome's console список, показывающий и массив, содержащий один объект, а другой один, содержащий два объекта. Когда я нажимаю первый, он превращается в массив с двумя объектами! Это меня озадачивает
какой ответ вы видите на вкладке инструментов разработчика сети для этого 'fetch' - иными словами, фактический ответ от сервера –
@ JaromandaX Фактический ответ - это первый фрагмент кода на вопрос –
Вы понимаете, что GIF, скриншот, JSBin и код, который вы поставили в своем вопросе, все выглядят иначе? Трудно помочь, потому что мы не можем воспроизвести проблему, с которой вы столкнулись, и вы не можете воспроизвести проблему в общедоступной демонстрации для нас. – amdouglas