2016-10-09 6 views
-3
{ 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によって送信された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

何が質問ですか?はい、無効なJSONです(少なくとも4つの異なる方法で、JSONの場合)。1.ルート値(オブジェクトや配列など)が1つもありません。 2.オブジェクト間にコンマはありません。 3.キーは二重引用符で囲まれていません。 4.文字列は二重引用符で囲まれていません。 –

+0

@ T.J.Crowderですが、このデータは私によって生成されません。それはfirebaseリアルタイムデータベースによって生成されます。私がそれをさらに処理できるようにデータを取得するたびに、プログラムでそれをどのようにフォーマットするのですか? –

+0

@AakashBansalこれはFCMサーバーからの応答ですか?または別のAPI呼び出し? –

答えて

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プログラムを確認して、出力の生成方法を確認してください。 1つ以外のものを使用している場合:

console.log(JSON.stringify(SOME_VARIABLE)); 

次に問題があります。いずれの場合においても

、私はFirebaseはなく[{"a":"b"},{"c":"d"}]{a:'b'}{c:'d'}を返していないことを確認してください以上だ - これはJSON形式を知らない初心者の典型的な誤りである、のいずれかの場合は信じがたい何かを世界最大のAPIプロバイダです。

あなたは本当の応答であるかを知りたい場合は、curlを使用します。

curl -v https://example.com/some/endpoint -H 'auth header' ... 

、あなたがそこに無効なJSONを見れば、それはFirebaseサポートに連絡する時間です。

JSON形式はhttp://json.org/で説明されています。これは存在する最も単純なデータ形式です。

0

デバッグ後にエラーが発生しました。ところで、私を案内するためのおかげでみんなを

newPost = JSON.stringify(newPost); 


ref.on("child_added", function(snapshot, prevChildKey) { 
    var newPost = snapshot.val(); 
    newPost = JSON.stringify(newPost);  //this line corrected my error 
    }); 

次の行はエラーを取り除きます。

関連する問題