2016-11-07 16 views
1

我从提取中遇到了这种奇怪的行为。JS Fetch JSON解析正在修改对象

首先看看这个截图的长度(这是正确的)和实际结构:console screenshot

考虑从一个服务器,其中该likes阵列清楚地包含一个对象的以下JSON响应,并且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 
       } 
      ] 
     } 
    } 
} 

看看它是怎么混起来likescomments集合。这现在令我疯狂。我错过了什么吗?

UPDATE

这里的a gif showing chrome's console列表表示并含有一个对象阵列,和包含两个对象另一个。当我点击前者时,它会变成一个有两个对象的数组!这使我感到困惑

+0

你在开发工具网络选项卡中看到什么反应为'fetch' - 换句话说,从你的服务器 –

+0

实际响应@ JaromandaX的实际响应是问题 –

+0

中的第一段代码您意识到GIF,屏幕截图,JSBin和您在问题中提出的代码都有所不同?这很难提供帮助,因为我们无法重现您遇到的问题,也无法在我们公开的可视演示中重现问题。 – amdouglas

回答

0

好的,我发现它实际上是lodash的_.merge()在取出它们之后改变了我的对象方式。我正在使用lodash来合并基于senderId密钥的两个集合(喜欢和评论)。

只是为了记录在案,我结束了使用此方法改为:https://stackoverflow.com/a/35094948/1418038