{ name: 'anonymous', text: 'Hello' }
{ name: 'anonymous', text: 'How are you' }
{ name: 'anonymous', text: 'I am fine' }
此代码由Firebase返回,我收到错误No JSON object could be decoded
。我认为这必须对JSON格式的有效性做些什么。
我使用Firebase Node.JS SDK获取此JSON数据。然后我使用Pyshell将它传递给Python。当我在python中使用json.loads
时,tt说:
C:\Python27>node firebase2.js
{ name: 'anonymous', text: 'Hello' }
{ name: 'anonymous', text: 'How are you' }
{ name: 'anonymous', text: 'I am fine' }
C:\Python27\firebase2.js:40
if (err) throw err;
^
Error: ValueError: No JSON object could be decoded
at PythonShell.parseError (C:\Python27\node_modules\python-shell\index.js:183:17)
at terminateIfNeeded (C:\Python27\node_modules\python-shell\index.js:98:28)
at ChildProcess.<anonymous> (C:\Python27\node_modules\python-shell\index.js:88:9)
at emitTwo (events.js:87:13)
at ChildProcess.emit (events.js:172:7)
at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)
----- Python Traceback -----
File "my_script.py", line 3, in <module>
myjson = json.loads(myinput)
File "C:\Python27\lib\json\__init__.py", line 339, in loads
return _default_decoder.decode(s)
File "C:\Python27\lib\json\decoder.py", line 364, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "C:\Python27\lib\json\decoder.py", line 382, in raw_decode
raise ValueError("No JSON object could be decoded")
答案 0 :(得分:1)
这不是一个有效的JSON,我认为你的firebase2.js
有问题。
而不是:
{ name: 'anonymous', text: 'Hello' }
{ name: 'anonymous', text: 'How are you' }
{ name: 'anonymous', text: 'I am fine' }
它应输出:
[
{ "name": "anonymous", "text": "Hello" },
{ "name": "anonymous", "text": "How are you" },
{ "name": "anonymous", "text": "I am fine" }
]
所有字符串(包括对象键)都必须用双引号引用。数组必须包含在方括号中,数组元素需要用逗号分隔。
查看您的firebase2.js
程序,看看它是如何生成输出的。如果它使用的不是单个:
console.log(JSON.stringify(SOME_VARIABLE));
然后就是你的问题。
无论如何,我更确定Firebase没有返回
{a:'b'}{c:'d'}
代替[{"a":"b"},{"c":"d"}]
- 这是初学者的一个典型错误,他们不了解JSON格式,这是世界上最大的API提供商之一难以置信的事情。< / p>
如果您想知道什么是真实的回复,请使用curl
:
curl -v https://example.com/some/endpoint -H 'auth header' ...
如果您在那里看到无效的JSON,那么现在是时候联系Firebase支持了。
JSON格式在http://json.org/上解释 - 这是现有的最简单的数据格式。
答案 1 :(得分:0)
经过一些调试后我收到了错误。
ref.on("child_added", function(snapshot, prevChildKey) {
var newPost = snapshot.val();
newPost = JSON.stringify(newPost); //this line corrected my error
});
以下行删除了错误:
newPost = JSON.stringify(newPost);
顺便说一句,感谢大家指导我。