回答:SyntaxError:JSON.parse:预期为“:”,但它位于对象的末尾

时间:2019-08-05 23:24:34

标签: javascript json

我正在将JSON字符串解析为JSON对象,并在第1行第120列(对象中的最后一个字符)遇到上述错误。

这是有问题的字符串:

{"{\"sender\":\"jeff\",\"recipient\":\"bill\",\"type\":\"friend-request\",\"viewed\":false,\"timestamp\":\"8/5/2019\"}"}

在此处以用户身份访问。

const displayNotifications = async function() {
    if (!user.notifications) {
      setNotifications(
        (
          <div key="0">
            <p>You have no notifications to check!</p>
          </div>
        ));
    } else {
      setNotifications(await JSON.parse(user.notifications).map((notification, i) => {
        if (notification.type === "friend-request") {
          return <FriendRequestNote key={i} notification={notification} />
        } else if (notification.type === "friend-accept") {
          return <FriendAcceptNote key={i} notification={notification} />
        }
        return true;
      }));
    }
  }

我已经通过JSONLinter运行了它,它给了我同样的错误。似乎无法弄清楚为什么它要我在对象的末尾放一个冒号。

2 个答案:

答案 0 :(得分:2)

您似乎在对象周围多了一个{}。我会建议使用{\"sender\":\"jeff\",\"recipient\":\"bill\",\"type\":\"friend-request\",\"viewed\":false,\"timestamp\":\"8/5/2019\"} 代替。

否则,您将使用其中带有字符串的对象,而json需要对象的键值结构。

答案 1 :(得分:0)

这将是有效的RFC 4627(JSON)。

{
   "sender": "jeff",
   "recipient": "bill",
   "type": "friend-request",
   "viewed": false,
   "timestamp": "8/5/2019"
}

如何提取或生成JSON?