Python JSON内容中的虚幻换行符

Python JSON内容中的虚幻换行符,python,json,google-sheets,python-requests,Python,Json,Google Sheets,Python Requests,背景 我使用Python请求将数据发布到google电子表格。由于意外的令牌“\n”,请求失败。但是,据我所知,我发送的JSON内容中没有换行符。这些换行符来自哪里?也许我需要在标题中定义内容长度。这里的任何方向都会有帮助 Python代码 def appendData(self, sheetName, rowData): rangeName = sheetName+"!A1" url = self.baseUrl+"/"+self.spreadsheetId+

背景

我使用Python请求将数据发布到google电子表格。由于意外的令牌“\n”,请求失败。但是,据我所知,我发送的JSON内容中没有换行符。这些换行符来自哪里?也许我需要在标题中定义内容长度。这里的任何方向都会有帮助

Python代码

def appendData(self, sheetName, rowData):

        rangeName = sheetName+"!A1"
        url = self.baseUrl+"/"+self.spreadsheetId+"/values/"+rangeName+":append?valueInputOption=RAW"

        requestBody = {
            'values': rowData
        }

        print("\n\nREQUEST BODY\n\n "+str(requestBody))

        try:
            response, content = self.service.request(url,
                                        method="POST",
                                        headers=self.headers,
                                        body=str(requestBody))
        except:
            print("Failed appending data")

        print("\n\nRESPONSE\n"+str(response))
        print("\n\nCONTENT\n"+str(content))
输出

REQUEST BODY

 {'values': [['Timestamp', 'Node 1', '00:13:A2:00:41:04:F1:BC', '', '', 'Node 2', '00:13:A2:00:40:D7:B6:27', '', '', 'Node 3', '00:13:A2:00:40:D7:B6:28', '', '', 'Node 4', '00:13:A2:00:41:04:F1:AB', '', '', 'Node 5', '00:13:A2:00:40:D7:B6:2E', '', ''], ['', 'AD0', 'AD1', 'AD2', 'AD3', 'AD0', 'AD1', 'AD2', 'AD3', 'AD0', 'AD1', 'AD2', 'AD3', 'AD0', 'AD1', 'AD2', 'AD3', 'AD0', 'AD1', 'AD2', 'AD3'], [' '], ['Lower Limit', u'4.9', u'4.9', u'4.9', u'4.9', u'4.640957967', u'4.640957967', u'4.636070381', u'4.636070381', u'0.7797653959', u'0.7797653959', u'0.7797653959', u'0.7797653959', u'-1.1', u'-1.1', u'-1.1', u'-1.1', u'-1.1', u'-1.1', u'-1.1', u'-1.1'], ['Upper Limit', u'5.1', u'5.1', u'5.1', u'5.1', u'5.046236559', u'5.046236559', u'5.041348974', u'5.036461388', u'1.009090909', u'1.009090909', u'1.009090909', u'1.004203324', u'-0.9', u'-0.9', u'-0.9', u'-0.9', u'-0.9', u'-0.9', u'-0.9', u'-0.9'], [' ']]}


RESPONSE
{'status': '400', 'content-length': '437', 'x-xss-protection': '1; mode=block', 'transfer-encoding': 'chunked', 'vary': 'Origin, X-Origin, Referer', 'server': 'ESF', '-content-encoding': 'gzip', 'cache-control': 'private', 'date': 'Wed, 16 Aug 2017 14:58:44 GMT', 'x-frame-options': 'SAMEORIGIN', 'alt-svc': 'quic=":443"; ma=2592000; v="39,38,37,35"', 'content-type': 'application/json; charset=UTF-8'}


CONTENT
{
  "error": {
    "code": 400,
    "message": "Invalid JSON payload received. Unexpected token.\n'], ['Lower Limit', u'4.9', u'4.9', u'4.\n                    ^",
    "errors": [
      {
        "message": "Invalid JSON payload received. Unexpected token.\n'], ['Lower Limit', u'4.9', u'4.9', u'4.\n                    ^",
        "domain": "global",
        "reason": "badRequest"
      }
    ],
    "status": "INVALID_ARGUMENT"
  }
}
标题

 self.headers = {'content-type': 'application/json', 'accept-encoding': 'gzip, deflate', 'accept': 'application/json', 'user-agent': 'google-api-python-client/1.6.2 (gzip)'}        

远程API不是抱怨换行符,而是抱怨unicode前缀:

>>> print("Invalid JSON payload received. Unexpected token.\n'], ['Lower Limit', u'4.9', u'4.9', u'4.\n                    ^")
Invalid JSON payload received. Unexpected token.
'], ['Lower Limit', u'4.9', u'4.9', u'4.
                    ^
要将类似JSON的字典转换为JSON字符串,请使用
JSON.dumps

from json import dumps
body = dumps(requestBody)