JSON响应获得截止

时间:2017-08-24 23:06:34

标签: javascript json reactjs express

建立一个快速服务器来呼叫api。我们成功地在服务器中成功请求了JSON对象。我们现在的问题是将它显示为客户端中的完整JSON对象。当服务器从api请求时,json数据被切断。有什么建议?我试过解析而不是stringify但是得到了这个错误。

  

SyntaxError:JSON输入的意外结束
      at Object.parse(native)
      at fetch.then.x(/Users/server.js:26:19)
      at process._tickCallback(internal / process / next_tick.js:103:7)

这是使用stringify的服务器代码。

var express = require('express');
var fetch = require('node-fetch');
var cors = require('cors');
const util = require('util');
const app = express();
var inflate = require('inflation')
var raw     = require('raw-body')
const json = require('body-parser').json();

app.use(cors())

const PORT = 3001
app.listen(PORT, () => {
  console.log(`Express server is running on port: ${PORT}!`);
});

app.get('/foo', (req,res) => {
  let dataUrl = 'www.apiURL.com/data.json';
  fetch(dataUrl)
  .then(x => {
    console.log(x.body._readableState.buffer.head.data.toString())
    let decompressed = inflate(x.body._readableState.buffer.toString());
res.send(JSON.stringify(x.body._readableState.buffer.head.data.toString()));
  })
  .catch(err => console.log(err))
})

这是客户端代码。

  componentDidMount(){
fetch(serverUrl)
.then(res => {
  res.json()
  .then(body => {
    this.setState({
      clubData: body
    })
    console.log(res)
  });
})
.catch(err => console.log(err))

为什么数据会被切断?当它是字符串形式时没关系,因为缓冲区也被切断了。

1 个答案:

答案 0 :(得分:0)

您的客户端代码应如下所示。

componentDidMount(){
  fetch(serverUrl)
   .then(res => res.json())
   .then(body => 
     this.setState({
       clubData: body
     }))
   .catch(err => console.log(err))
}

如果这解决了您的问题,请告诉我,如果还有其他我缺少的话,我可以更新答案