我正在从SQL服务器数据库中检索我想要发送到Web服务的数据。服务器期望以下面指定的特定格式的JSON。我的输出现在看起来并不像我想要的那样,也不能被服务器使用。如何添加下面指定的密钥?我使用的是Python 2.6.7。
{
"MetaData": {},
"SRData": {
"AddressVerified": "Y",
"SRNumber": "1-16774241",
"SRType": "Electronic Waste"
}
}
代码:
import pyodbc
import json
import collections
import requests
connstr = 'DRIVER={SQL Server};SERVER=url;DATABASE=ServiceRequest; UID=SA;PWD=pwd'
conn = pyodbc.connect(connstr)
cursor = conn.cursor()
cursor.execute("""
SELECT SRNUMBER, FirstName, LastName, ParentNumber
FROM MYLA311 """)
rows = cursor.fetchall()
metadata = '{ "MetaData": {},"SRData":'
objects_list = []
for row in rows:
d = collections.OrderedDict()
d['SRNUMBER']= row.SRNUMBER
d['FirstName']= row.FirstName
d['LastName']= row.LastName
d['ParentNumber']= row.ParentNumber
objects_list.append(d)
output = {
metadata: objects_list
j = json.dumps(output)
objects_file = 'C:\Users\Administrator\Desktop\JSONOutput.txt'
f = open(objects_file,'w')
url = "https://posttestserver.com/post.php"
data = j
headers = {'Content-type': 'text/plain', 'Accept': '/'}
r = requests.post(url, data= json.dumps(output), headers=headers, verify=False)
conn.close()
当前输出:
{
"{ \"MetaData\": {},\"SRData\":": [
{
"FirstName": "MyLAG",
"LastName": "ThreeEleven",
"ParentNumber": "021720151654176723",
"SRNUMBER": "1-3580171"
}
]
}
答案 0 :(得分:1)
你正以错误的方式接近问题。您认为需要做的是在两者之间注入JSON语法以获得最终结果,但是您需要做的是获取要序列化的对象(格式化为JSON)以反映您想要输出的JSON结构。
换句话说,如果您的 public List<ErrorGet> TypeTwoTest(TypeTwoAditionalInformation _type)
{
BaseClassTest(_type);
..
..
if(_type.ID!=null) ...
if(_type.x3!=null) ...
if(_type.x4!=null) ...
}
具有与JSON完全相同的结构,那么您可以设置:
dict
我会让你充满活力:)
答案 1 :(得分:0)
首先你要传递这行中的文字:
metadata = '{ "MetaData": {},"SRData":'
记住json.dumps为json创建了一个python字典,所以忘记了单引号
metadata = { "MetaData": {},"SRData":
然后objects_list
是一个数组,所以它会放括号[]
,如果你需要获得很多行,那么它可以,但是在你的第一个JSON布局中没有数组,只需要放d = collections.OrderedDict()
SRDATA: