2

Python でライブラリを使用して、requestsデータ (生の値) を firebase の場所にプッシュしようとしています。

私はurladdurl認証トークンのある場所の)を持っているとしましょう。その場所で、たとえば、をプッシュしstringたいInternationalhereの回答に基づいて、試しました

data = {'.value': 'International'}

p = requests.post(urladd, data = sjson.dumps(data))

私は得る<Response [400]>p.text私に与えます:

u'{\n  "error" : "Invalid data; couldn\'t parse JSON object, array, or value. Perhaps you\'re using invalid characters in your key names."\n}\n'

それらのキー.valueが無効であるようです。しかし、それは上にリンクされた答えが示唆するものです。これが機能しない理由、または Python でこれを行う方法はありますか? 以下のように動作するため、接続や認証に問題はありません。ただし、それは生の値ではなくオブジェクトをプッシュします。

data = {'name': 'International'}

p = requests.post(urladd, data = sjson.dumps(data))

ご協力いただきありがとうございます。

4

2 に答える 2

2

上記のアンドリューの答えはうまくいきます。他の誰かがrequestsPythonのライブラリを使用してこれを行う方法を知りたい場合は、これが役立つと思いました。

import simplejson as sjson

data = sjson.dumps("International")

p = requests.post(urladd, data = data)

何らかの理由で、データを文字列化されたJSONバージョンに変換する前に、データを辞書形式にする必要があると考えていました。そうではなく、単純な文字列をへの入力として使用できますsjson.dumps()

于 2013-02-15T12:27:50.670 に答える
2

リンクした回答は、値に優先度を割り当てたい場合の特別なケースです。一般に、「.value」は無効な名前であり、エラーがスローされます。

「インターナショナル」だけを書きたい場合は、そのデータの文字列化された JSON バージョンを記述する必要があります。目の前に Python の例はありませんが、curl コマンドは次のようになります。

curl -X POST -d "\"インターナショナル\"" https://...

于 2013-02-15T05:16:32.530 に答える