Python - 创建 JSON 数组?并传递给ajax
Posted
技术标签:
【中文标题】Python - 创建 JSON 数组?并传递给ajax【英文标题】:Python - Creating JSON array? and passing to ajax 【发布时间】:2018-09-05 23:53:52 【问题描述】:在我的 python 服务器端脚本中,我有以下内容
....
data =
data['id'] = id
data['organizer'] = organizer
data['eventStart'] = eventStartLocal
data['eventEnd'] = eventEndLocal
data['subject'] = subject
data['attendees'] = attendees
# Serializing Data
json_data = json.dumps(data)
id += 1
print(json_data) #this is what the script returns
在我的前端使用 jquery/javascript 我有这个..
$.ajax(
type: 'REQUEST',
dataType: 'text',
url: 'json.py',
success: function(data)
console.log(data);
obj = JSON.parse(data);
,
).done(function()
console.log(obj)
)
);
我的输出是:
"id": 0, "organizer": "Some Name", "eventStart": "09:30 AM", "eventEnd": "10:00 AM", "subject": "rental procedure", "attendees": "Some Name<br />Person 2<br />Person 3"
"id": 1, "organizer": "Some Name", "eventStart": "09:30 AM", "eventEnd": "10:00 AM", "subject": "rental procedure", "attendees": "Some Name<br />Person 2<br />Person 3"
"id": 2, "organizer": "Some Name", "eventStart": "09:30 AM", "eventEnd": "10:00 AM", "subject": "rental procedure", "attendees": "Some Name<br />Person 2<br />Person 3"
我的问题
当我尝试在 javascript 中解析 json 时,我得到一个关于
的错误代码JSON 中的意外令牌 位置
在做了一些研究后,我发现我必须发送一个 json 数组作为响应,而不是为每个事件打印一个 jsoned 行,否则我的 javascript 将无法解析它并将其放入对象中。
我的目标
从服务器获取数据并将其作为对象传递给 javascript,以便我可以遍历该对象并为每个事件创建一个 html 元素。
我是这个 JSON 的新手,不知何故我需要执行以下操作,但我似乎不知道如何创建一个 json 数组(在每个 json/ 末尾都有 [ ] 和 ,行。
[
"id": 0, "organizer": "Some Name", "eventStart": "09:30 AM", "eventEnd": "10:00 AM", "subject": "rental procedure", "attendees": "Some Name<br />Person 2<br />Person 3",
"id": 1, "organizer": "Some Name", "eventStart": "09:30 AM", "eventEnd": "10:00 AM", "subject": "rental procedure", "attendees": "Some Name<br />Person 2<br />Person 3",
"id": 2, "organizer": "Some Name", "eventStart": "09:30 AM", "eventEnd": "10:00 AM", "subject": "rental procedure", "attendees": "Some Name<br />Person 2<br />Person 3"
]
【问题讨论】:
【参考方案1】:...答案末尾的 JSON 数组不正确,但要生成数组,只需在 Python 中为 json.dumps 提供一个列表。类似json_data_list = []; ... ; json_data_list.append(json_data); ... print(json.dumps(json_data_list)); ...
【讨论】:
啊,我知道那是我缺少的部分。所以解决方案是创建一个列表并将我的数据附加到列表data_list.append(data)
,然后jsonify data_list
。 =) 谢谢!
@user234461 你拯救了我的一天 ==> print(json.dumps(json_data_list));
说明将最终附加列表作为 json 数据。非常感谢
@jAntoni 很高兴听到您的意见,谢谢您的评论 :)【参考方案2】:
您的 JSON 文件不正确。通常,您必须具有以下结构:
"key1": [
"id": "blabla",
"name": "Toto"
,
"id": "blibli",
"name": "Tata"
],
"key2":
"id": "value"
,
"key3": "value"
所以我认为你必须改变你的 JSON 数组,例如如下:
[
"id": 0,
"organizer": "Some Name",
"eventStart": "09:30 AM",
"eventEnd": "10:00 AM",
"subject": "rental procedure",
"attendees": "Some Name<br />Person 2<br />Person 3"
,
"id": 1,
"organizer": "Some Name",
"eventStart": "09:30 AM",
"eventEnd": "10:00 AM",
"subject": "rental procedure",
"attendees": "Some Name<br />Person 2<br />Person 3"
,
"id": 2,
"organizer": "Some Name",
"eventStart": "09:30 AM",
"eventEnd": "10:00 AM",
"subject": "rental procedure",
"attendees": "Some Name<br />Person 2<br />Person 3"
]
您也可以决定不使用我上面建议的字典列表,而是使用 ID 值作为每个字典的键;在这种情况下,您有:
"id0":
"organizer": "Some Name",
"eventStart": "09:30 AM",
"eventEnd": "10:00 AM",
"subject": "rental procedure",
"attendees": "Some Name<br />Person 2<br />Person 3"
,
"id1":
"organizer": "Some Name",
"eventStart": "09:30 AM",
"eventEnd": "10:00 AM",
"subject": "rental procedure",
"attendees": "Some Name<br />Person 2<br />Person 3"
,
"id2":
"organizer": "Some Name",
"eventStart": "09:30 AM",
"eventEnd": "10:00 AM",
"subject": "rental procedure",
"attendees": "Some Name<br />Person 2<br />Person 3"
【讨论】:
您的第二个 JSON 块是一个包含列表的对象,但该列表没有名称。我相信 JSON 中允许使用裸列表(即没有封闭对象),但如果不是,您需要为列表命名。以上是关于Python - 创建 JSON 数组?并传递给ajax的主要内容,如果未能解决你的问题,请参考以下文章
OpenCart 将数组返回到 JSON 并传递给 jQuery
将JSON数组传递给按钮jQuery的动态创建的onclick方法