可以解码/ post / No JSON对象的ValueError

时间:2017-11-11 10:15:24

标签: json django python-2.7 api azure

这是我的json:

{
  "documents": [
                 {
                 "score": 0.5, 
                 "id": "1"
                  }
               ], 
   "errors":   []
}

我想知道如何在不将其转换为字典的情况下获取“得分”?因为当我尝试使用json.loads时,它会给我以下错误:

ValueError at /post/
No JSON object could be decoded

这是我正在使用的代码。

def GetSentiment(documents):
    "Gets the sentiments for a set of documents and returns the 
    information."
    headers = {'Ocp-Apim-Subscription-Key': accessKey}
    conn = httplib.HTTPSConnection(uri)
    body = json.dumps(documents)
    conn.request("POST", path, body, headers)
    response = conn.getresponse()
    return response.read()

documents = {'documents': [
                        {'id': '1', 'language': 'en', 'text': caption},
             ]}
result = GetSentiment(documents)
resp_dict = json.loads(result)
print resp_dict
score = resp_dict["documents"][0]["score"]
return score

1 个答案:

答案 0 :(得分:0)

我看过你的JSON转换代码,很好:

>>> result = '{"documents": [{"score": 0.5,"id": "1"}],"errors": []}'
>>> import json
>>> resp_dict = json.loads(result)
>>> score = resp_dict["documents"][0]["score"]
>>> print score
0.5 # success !

所以你的问题必须是result对象,这不是你建议的。您的GetSentiment功能确实存在问题。

您的print result行会产生什么?此外,您是否尝试过使用requests之类的东西来让您的生活更轻松?