python
  • json
  • rest
  • curl
  • 2017-01-24 5 views 0 likes 
    0

    私はpythonでカールリクエストを実行しようとしています。私のコードは次のとおりです:pythonでカールリクエストを実行

    TypeError: expected string or buffer (payload = json.loads(open("request.json")))

    このエラーが何であるか任意のアイデア:私は2行目に、次のエラーが発生しますHowver

    url = 'http://xx.xxx.xx.xxx:xxxx/api/common/learningSessions/588752bef1d4654173a43015'   
    payload = json.loads(open("request.json"))   
    headers = {'X-User-Path': '....', 'X-User-Token': '...') 
    r = requests.get(url, data=json.dumps(payload), headers=headers) 
    

    +0

    しかし、私のjsonは検証されています。 – christosh

    答えて

    3

    これが返す必要があるとは思いません<open file 'request.json', mode 'r' at 0x108526810>

    json.loadsが必要です。

    あなたは、ファイルの内容の代わりに、ファイルオブジェクトを返します

    url = 'http://xx.xxx.xx.xxx:xxxx/api/common/learningSessions/588752bef1d4654173a43015'   
    payload = json.loads(open("request.json").read())   
    headers = {'X-User-Path': '....', 'X-User-Token': '...') 
    r = requests.post(url, data=json.dumps(payload), headers=headers) 
    

    file.readを試すことができます。

    あなたが直接、これは私が

    echo '{}' > /tmp/test.json 
    cat /tmp/test.json 
    {} 
    

    を試みたものです代わりにjson.loads

    json.loadを使用することができますread使用したくない場合は、同じファイルを読み込むようにしてください。

    Python 2.7.10 (default, Jul 30 2016, 19:40:32) 
    [GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.34)] on darwin 
    Type "help", "copyright", "credits" or "license" for more information. 
    >>> import json 
    >>> payload = json.loads(open("/tmp/test.json").read()) 
    >>> print payload 
    {} 
    
    +0

    それから、私は同じ行で受け取っています:ValueError:同じ行に、JSONオブジェクトをデコードできませんでした。 – christosh

    +0

    @christoshあなたはあなたのファイル 'content'を与えることができますか?サンプル 'json'とそのうまくいったものを試したので、 – Nilesh

    +0

    ペイロード= json.loads(open(" request.json ")。read())しようとしたときに同じエラーが発生しました。 – christosh

    3

    expected string or buffer

    open()はファイルを返します。

    そしてjson.load()json.loads()違いがあります(第2は、文字列ではなく、ファイルを受け付け)

    以外にも、私はjson.dumps()あなたはファイルopen("request.json")を開いている

    2

    あなたはjson.loads()を使用しますが、ファイルをロードしようとしています。代わりにjson.load()を使用する必要があります。

    payload = json.load(open("request.json")) 
    
    +0

    それから、私は同じ行で受け取ります:ValueError:JSONオブジェクトがデコードできません – christosh

    +2

    @christosh' json'ファイルが 'json format'いくつかのバリデーターでその形式を確認してください – Nilesh

    +0

    私のjsonには{}しか含まれていません。実際には私はポストを取ることを実行したい。 – christosh

    関連する問題