Python:{“errors”:{“errors”:[“无法将当前JSON数组(例如[1,2,3])反序列化为类型&“x27”;
我的dict格式数据Python:{“errors”:{“errors”:[“无法将当前JSON数组(例如[1,2,3])反序列化为类型&“x27”;,python,sql,arrays,json,api,Python,Sql,Arrays,Json,Api,我的dict格式数据json\u输出在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.79310
json\u输出在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.
{'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},}]}
它显示一切正常,没有任何错误,因此我猜数组或列表可能有问题。有什么想法吗?问题已经解决。当问管理员关于post问题时,答案是“SQL Server现在无法输入Json数组数据,应该在for循环中逐个输入。”在本例中,答案是:
for i in json_output:
data_json = json.dumps(i)
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())
它工作得很好。问题已经解决。当向管理员询问post问题时,答案是“SQL Server现在无法输入Json数组数据,应该在for循环中逐个输入。”在本例中,它是:
for i in json_output:
data_json = json.dumps(i)
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())
而且效果很好。看起来您在Z0001002
之前有一个额外的结束括号。尝试更改为}]},
@thorntonc My bad,这是一个编辑错误,我已经更正了。问题出在那里。这行吗r_json=requests.post(url,json_输出,headers={'Content-Type':'application/json'},auth=HttpNegotiateAuth())
对post()
的调用需要一个列表或dict,并将json_输出
序列化为json。@MikeOrganek这不起作用。反馈为{“errors”:{“”:[“分析值时遇到意外字符:c.路径“”,第0行,位置0。”]},“类型”:https://tools.ietf.org/html/rfc7231#section-6.5.1、“标题”:“发生一个或多个验证错误”,“状态”:400,“traceId”:“e91ae74a-4998ab96d1d19138.”
。看起来您在Z0001002
之前有一个额外的右括号},}]},
。尝试更改为}]},
@thorntonc My bad,这是一个编辑错误,我已经更正了。问题出在那里。这行吗r_json=requests.post(url,json_输出,headers={'Content-Type':'application/json'},auth=HttpNegotiateAuth())
对post()
的调用需要一个列表或dict,并将json_输出
序列化为json。@MikeOrganek这不起作用。反馈为{“errors”:{“”:[“分析值时遇到意外字符:c.路径“”,第0行,位置0。”]},“类型”:https://tools.ietf.org/html/rfc7231#section-6.5.1、“标题”:“出现一个或多个验证错误”。“状态”:400,“traceId”:“| e91ae74a-4998ab96d1d19138”。}
。