Firebase - 无效的JSON数据或键值。键值不能包含$#[] /或

时间:2016-07-29 22:41:39

标签: json firebase firebase-realtime-database

我试图将我的JSON文件导入我的Firebase但它一直给我这个错误。我不知道为什么不允许导入这个JSON文件,因为JSONLint说它是一个有效的JSON文件。

这是文件:

{
  "Featured" : {
      "artist" : "james turell",
      "artistEPK" : "artistsownepk.pdf",
      "author" : "john queue author",
      "date" : "7/28/2016",
      "fullScreenImg" : "https://firebasestorage.googleapis.com/v0/b/wallplay-a8440.appspot.com/o/Screen%20Shot%202016-06-08%20at%2012.00.06%20PM.png?alt=media&token=1df5d60d-808c-48bb-a591-e005f82e4687",
      "linksToMedia" : [ "www.wallplay.com/project-name/james-t/press.html" ],
      "linksToPress" : [ "" ],
      "location" : "10 Main Street",
      "mainImg" : "https://firebasestorage.googleapis.com/v0/b/wallplay-a8440.appspot.com/o/Screen%20Shot%202016-06-08%20at%2012.00.06%20PM.png?alt=media&token=1df5d60d-808c-48bb-a591-e005f82e4687",
      "pressImgs" : [ "https://firebasestorage.googleapis.com/v0/b/wallplay-a8440.appspot.com/o/Screen%20Shot%202016-06-08%20at%2012.00.06%20PM.png?alt=media&token=1df5d60d-808c-48bb-a591-e005f82e4687", "https://firebasestorage.googleapis.com/v0/b/wallplay-a8440.appspot.com/o/Screen%20Shot%202016-06-08%20at%2012.00.06%20PM.png?alt=media&token=1df5d60d-808c-48bb-a591-e005f82e4687", "https://firebasestorage.googleapis.com/v0/b/wallplay-a8440.appspot.com/o/Screen%20Shot%202016-06-08%20at%2012.00.06%20PM.png?alt=media&token=1df5d60d-808c-48bb-a591-e005f82e4687" ],
      "pressRelease" : "projectpressrelease.pdf",
      "projectImgs" : [ "https://firebasestorage.googleapis.com/v0/b/wallplay-a8440.appspot.com/o/Screen%20Shot%202016-06-08%20at%2012.00.06%20PM.png?alt=media&token=1df5d60d-808c-48bb-a591-e005f82e4687", "https://firebasestorage.googleapis.com/v0/b/wallplay-a8440.appspot.com/o/Screen%20Shot%202016-06-08%20at%2012.00.06%20PM.png?alt=media&token=1df5d60d-808c-48bb-a591-e005f82e4687", "https://firebasestorage.googleapis.com/v0/b/wallplay-a8440.appspot.com/o/Screen%20Shot%202016-06-08%20at%2012.00.06%20PM.png?alt=media&token=1df5d60d-808c-48bb-a591-e005f82e4687" ],
      "projectSubheader" : "subheader of project",
      "projectTitle" : "title of project",
      "projectURL" : "",
      "soundFile" : [ ],
      "text" : "here there would be a text for james turell",
      "videoURL" : ""
    },
  "Future" : {

  },
  "Past" : {

  },
  "Present" : {

  }
}

使用Web界面导入json时会出现问题

enter image description here

9 个答案:

答案 0 :(得分:13)

我只是花了一些时间在这上面,并在收到此错误消息时为我(可能还有许多其他人)发现了问题。看起来firebase只能导入UTF-8编码(无BOM)的文件

我觉得很奇怪,因为我无法重新导入刚导出的内容。

我尝试了所有带有LE和BE的UTF版本8,16,有或没有BOM,只有UTF-8有效

我希望firebase没有这个完全误导性的错误消息

enter image description here

答案 1 :(得分:5)

有两件事可能会帮助别人节省几个小时的头痛:

1)空字符串是有效的JSON密钥,它们不是有效的Firebase密钥。

2)虽然Web工具错误消息很糟糕,但命令行工具实际上提供了有用的信息,例如行号(当你有300K +行文件时很好)

E.g。

firebase --project database:set / import.json

覆盖根目录中的所有内容

答案 2 :(得分:3)

这发生在我身上,并且有完全不同的原因:我有Firebase函数,这些函数在将数据添加到某些集合时触发。 GUI工具给了我OP遇到的无用的错误。但是使用CLI运行,我得到了:

Error: HTTP Error: 400, This request would cause too many functions to be triggered.

因此,由于为要导入的几百个节点中的每个节点运行一个函数会造成灾难性的后果,该错误最终真正地节省了我的皮革。

为解决此问题,我部署了带有注释功能的应用程序代码,然后能够使用GUI导入我的数据。导入数据后,我便取消了注释功能并重新部署。

答案 3 :(得分:2)

我的文件名是“some-somethingelse”,即文件名中有一个“ - ”字符。将其更改为'something.json'解决了问题

因此,文件名中没有任何特殊字符。

答案 4 :(得分:0)

您发布的JSON对Firebase有效,因此问题不在于此JSON。它必须在您的应用程序中的其他位置。

答案 5 :(得分:0)

如果您创建了很多触发函数。您必须删除触发功能。接下来再试一次。这样对我有用。

答案 6 :(得分:0)

当Firebase抛出此错误时,我刚刚发现了另一个原因:

这是Firebase拒绝上传的数据:

 {
            "S. No.": 2,
            "University Name": "Acharya Nagarjuna University, Guntur (Id: U-0003)",
            "College Name": "Abhinav Institute of Management & Technology (Id: C-39450)",
            "College Type": "Affiliated College",
            "State Name": "Andhra Pradesh",
            "District Name": "Prakasam"
          } 

我想过更改键名“ S. No.”而且有效。

{
            "S": 2,
            "University Name": "Acharya Nagarjuna University, Guntur (Id: U-0003)",
            "College Name": "Abhinav Institute of Management & Technology (Id: C-39450)",
            "College Type": "Affiliated College",
            "State Name": "Andhra Pradesh",
            "District Name": "Prakasam"
          } 

Firebase正在接受更高的格式(我相信问题在于。(点)和空格。) 希望对您有帮助!

答案 7 :(得分:0)

对于我来说,这也是发生的事情,作为一名Web开发人员,我查看了开发人员控制台,而实际的错误是由于身份验证,即Firebase的控制台在验证JSON文件时无法进行身份验证。

因此我对网页进行了“刷新”,并且可以正常工作。

答案 8 :(得分:-1)

我对包含大量数据的JSON有类似的问题。我使用firebase import tool解决了这个问题。它具有导入特定节点等的选项。