Python:{“errors”:{“errors”:[“无法将当前JSON数组(例如[1,2,3])反序列化为类型&“x27”;

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

我的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.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”。}