【问题标题】:Getting ERROR in React JS: SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data?在 React JS 中出现错误:SyntaxError:JSON.parse:JSON 数据的第 1 行第 1 列出现意外字符?
【发布时间】:2020-03-25 02:49:04
【问题描述】:

我们正在开发 Firebase,我们希望在我们的 react js UI 中获取 firebase 数据。我们创建了用于在 Flask 中获取数据的 API。烧瓶代码如下

firebase = pyrebase.initialize_app(config) db = firebase.database()

# Receive data from Firebase RealTime Database @app.route("/") def home():
    db_events = db.child().get().val()
    return jsonify(db_events)

现在,在 React JS 组件中调用 API,代码如下:-

      import React, { Component } from 'react';
import Temperature from './components/temperature';

class App extends Component {
  state = {
    contacts: [],
    temperatures: [],
  };

  componentDidMount(){
    fetch('192.168.1.2:5000')
      .then( res => res.json() )
      .then( (data) => {
        this.setState({ contacts: data })
        console.log(data)
      })
      .catch(console.log)
  }

  render() {
    return (
      <div></div>
    );
  }

}

export default App;

但是,当我们启动服务器时,控制台出现错误。错误如下:

SyntaxError:“JSON.parse:第 1 行第 1 列的意外字符 JSON 数据”

我们从 API 获得的 JSON 如下所示:

{
    "DHT11": {
        "Humidity": {
            "-LuWFvEpzI9QAu_8eMEr": "49.00%",
            "-LuWHg8WL90DOdkSKd5J": "48.00%",
            "-LuWHmHpZ2veEKk1qqx2": "49.00%",
            "-LuWHpUA9l-W6_ZBUV9W": "49.00%"
        },
        "LED_STATUS": "OFF",
        "Temperature": {
            "-LuWFvMVeyUhfKEpCxqe": "23.00°C",
            "-LuWHgGX-tepMSXLRZiJ": "23.00°C",
            "-LuWHmPdHdgBaQxkSbh4": "23.00°C",
            "-LuWHpb-d4UbkomxayjN": "23.00°C",
            "-LuWHsnQqIeUm1QGtixw": "23.00°C"
       }
    }
}

为什么我们会收到此错误,所有其他虚拟 API 都在这里工作。当我们检查 JSON 的格式时,它是有效的。我们从错误中得到的是我们的 JSON 格式的键不支持。

请帮助我们解决问题。先感谢您。

【问题讨论】:

  • 您正在记录数据并且它正在工作。这意味着问题出在代码的其他地方。向我们展示您正在使用渲染数据的反应组件。您可以删除烧瓶代码。如果数据记录正确,则与此问题无关。
  • @JoshPittman 所有其他 API 都在工作。但是我们用 Flask 创建的这个不工作。 JSON 是正确的。
  • @JoshPittman 我已经更新了组件代码。
  • 如果您说数据正确记录到控制台,那么您的 api 没有任何问题。尝试删除 fetch call 'componentDidMount',你仍然得到错误吗?

标签: json reactjs firebase api firebase-realtime-database


【解决方案1】:

您的Temperature 对象缺少一个结束括号... 此外,JSON.parse 无法使用尾随逗号... 请参阅下面更正后的 JSON...

{
    "DHT11": {
        "Humidity": {
            "-LuWFvEpzI9QAu_8eMEr": "49.00%",
            "-LuWHg8WL90DOdkSKd5J": "48.00%",
            "-LuWHmHpZ2veEKk1qqx2": "49.00%",
            "-LuWHpUA9l-W6_ZBUV9W": "49.00%"
        },
        "LED_STATUS": "OFF",
        "Temperature": {
            "-LuWFvMVeyUhfKEpCxqe": "23.00°C",
            "-LuWHgGX-tepMSXLRZiJ": "23.00°C",
            "-LuWHmPdHdgBaQxkSbh4": "23.00°C",
            "-LuWHpb-d4UbkomxayjN": "23.00°C",
            "-LuWHsnQqIeUm1QGtixw": "23.00°C"
        }
    }
}

【讨论】:

  • 我们如何从 JSON 中删除尾随逗号?数据从我们的传感器实时传输到 firebase 数据库。您的温度对象缺少一个结束括号...这是错误的。我们已经更正了。
  • 这不是限制数据,我们还有更多。这些数据实时更新。
  • Kwame Opare Asiedu JSON 格式没有尾随逗号,JSON 有效。我们已经检查过了。
  • 哦...您的 API 是否为您提供了您发布的确切 sn-p 或者您正在获取 JSON 字符串...??
猜你喜欢
  • 2014-11-02
  • 1970-01-01
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
  • 2016-11-19
  • 1970-01-01
  • 2020-11-05
  • 2022-06-12
相关资源
最近更新 更多