【发布时间】:2020-12-05 06:04:29
【问题描述】:
我的dict格式数据json_output在Python中是这样的:
[{'code': 'Z0001001',
'dateList': [{'FDate': '2008-01-11T00:00:00', 'value': 308.7931034482759},
{'FDate': '2008-01-18T00:00:00', 'value': 308.7931034482759},
{'FDate': '2008-01-25T00:00:00', 'value': 308.7931034482759},
{'FDate': '2008-01-31T00:00:00', 'value': 308.7931034482759},
{'FDate': '2008-02-08T00:00:00', 'value': 309.82758620689657},
{'FDate': '2008-02-15T00:00:00', 'value': 309.82758620689657},
{'FDate': '2008-02-22T00:00:00', 'value': 309.82758620689657},
{'FDate': '2008-02-29T00:00:00', 'value': 309.82758620689657},
{'FDate': '2008-03-07T00:00:00', 'value': 323.9655172413793},
{'FDate': '2008-03-14T00:00:00', 'value': 323.9655172413793},
{'FDate': '2008-03-21T00:00:00', 'value': 323.9655172413793},
{'FDate': '2008-03-31T00:00:00', 'value': 323.9655172413793},
{'FDate': '2008-04-11T00:00:00', 'value': 324.48275862068965},
{'FDate': '2008-04-18T00:00:00', 'value': 324.48275862068965},
{'FDate': '2008-04-25T00:00:00', 'value': 324.48275862068965},
{'FDate': '2008-04-30T00:00:00', 'value': 324.48275862068965},
{'FDate': '2008-05-09T00:00:00', 'value': 326.2068965517241},
{'FDate': '2008-05-16T00:00:00', 'value': 326.2068965517241},
{'FDate': '2008-05-23T00:00:00', 'value': 326.2068965517241},
{'FDate': '2008-05-30T00:00:00', 'value': 329.3333333333333}]},
{'code': 'Z0001002',
'dateList': [{'FDate': '2008-01-11T00:00:00', 'value': 294.2857142857143},
{'FDate': '2008-01-18T00:00:00', 'value': 294.2857142857143},
{'FDate': '2008-01-25T00:00:00', 'value': 294.2857142857143},
{'FDate': '2008-01-31T00:00:00', 'value': 294.2857142857143},
{'FDate': '2008-02-08T00:00:00', 'value': 297.14285714285717},
{'FDate': '2008-02-15T00:00:00', 'value': 297.14285714285717},
{'FDate': '2008-02-22T00:00:00', 'value': 297.14285714285717},
{'FDate': '2008-02-29T00:00:00', 'value': 297.14285714285717},
{'FDate': '2008-03-07T00:00:00', 'value': 307.14285714285717},
{'FDate': '2008-03-14T00:00:00', 'value': 307.14285714285717},
{'FDate': '2008-03-21T00:00:00', 'value': 307.14285714285717},
{'FDate': '2008-03-31T00:00:00', 'value': 307.14285714285717},
{'FDate': '2008-04-11T00:00:00', 'value': 309.2857142857143},
{'FDate': '2008-04-18T00:00:00', 'value': 309.2857142857143},
{'FDate': '2008-04-25T00:00:00', 'value': 309.2857142857143},
{'FDate': '2008-04-30T00:00:00', 'value': 309.2857142857143},
{'FDate': '2008-05-09T00:00:00', 'value': 309.2857142857143},
{'FDate': '2008-05-16T00:00:00', 'value': 309.2857142857143},
{'FDate': '2008-05-23T00:00:00', 'value': 309.2857142857143},
{'FDate': '2008-05-30T00:00:00', 'value': 309.2857142857143}]}]
然后我使用json.dumps()将其转换为json格式,以便我可以通过api将json数据转换为SQL server。
data_json = json.dumps(json_output)
from requests_negotiate_sspi import HttpNegotiateAuth
url = "http://xxx/api/xxx"
r_json = requests.post(url, data_json,headers={'Content-Type':'application/json'},auth=HttpNegotiateAuth())
print(r_json)
print(r_json.text)
print(r_json.status_code)
print(r_json.raise_for_status())
但是,当我运行它时,它给了我这样的错误:
{"errors":{"":["Cannot deserialize the current JSON array (e.g. [1,2,3]) into type 'ZSFund.DataService.Web.Models.Code.CodeValueMaintainEntity' because the type requires a JSON object (e.g. {\"name\":\"value\"}) to deserialize correctly.\r\nTo fix this error either change the JSON to a JSON object (e.g. {\"name\":\"value\"}) or change the deserialized type to an array or a type that implements a collection interface (e.g. ICollection, IList) like List<T> that can be deserialized from a JSON array.
我尝试将它们一一转换,就像一次将Z0001001转换成SQL一样,格式如下:
{'code': 'Z0001001',
'dateList': [{'FDate': '2008-01-11T00:00:00', 'value': 308.7931034482759},
{'FDate': '2008-01-18T00:00:00', 'value': 308.7931034482759},
{'FDate': '2008-01-25T00:00:00', 'value': 308.7931034482759},
{'FDate': '2008-01-31T00:00:00', 'value': 308.7931034482759},
{'FDate': '2008-02-08T00:00:00', 'value': 309.82758620689657},
{'FDate': '2008-02-15T00:00:00', 'value': 309.82758620689657},
{'FDate': '2008-02-22T00:00:00', 'value': 309.82758620689657},
{'FDate': '2008-02-29T00:00:00', 'value': 309.82758620689657},
{'FDate': '2008-03-07T00:00:00', 'value': 323.9655172413793},
{'FDate': '2008-03-14T00:00:00', 'value': 323.9655172413793},
{'FDate': '2008-03-21T00:00:00', 'value': 323.9655172413793},
{'FDate': '2008-03-31T00:00:00', 'value': 323.9655172413793},
{'FDate': '2008-04-11T00:00:00', 'value': 324.48275862068965},
{'FDate': '2008-04-18T00:00:00', 'value': 324.48275862068965},
{'FDate': '2008-04-25T00:00:00', 'value': 324.48275862068965},
{'FDate': '2008-04-30T00:00:00', 'value': 324.48275862068965},
{'FDate': '2008-05-09T00:00:00', 'value': 326.2068965517241},
{'FDate': '2008-05-16T00:00:00', 'value': 326.2068965517241},
{'FDate': '2008-05-23T00:00:00', 'value': 326.2068965517241},
{'FDate': '2008-05-30T00:00:00', 'value': 329.3333333333333},}]}
它显示一切正常,没有任何问题,所以我猜数组或列表可能有问题。有什么想法吗?
【问题讨论】:
-
看起来您在
Z0001002之前多了一个右括号},}]},。试试改成}]}, -
@thorntonc 我的错,这是一个编辑错误,我已经更正了。问题仍然存在。
-
这行得通吗?
r_json = requests.post(url, json_output,headers={'Content-Type':'application/json'},auth=HttpNegotiateAuth())对post()的调用需要一个列表或字典,并将为您将json_output序列化为json。 -
@MikeOrganek 它不起作用。反馈是
<Response [400]> {"errors":{"":["Unexpected character encountered while parsing value: c. Path '', line 0, position 0."]},"type":"https://tools.ietf.org/html/rfc7231#section-6.5.1","title":"One or more validation errors occurred.","status":400,"traceId":"|e91ae74a-4998ab96d1d19138."}。
标签: python sql arrays json api