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

js变量传递给json

将JSON数组传递给按钮jQuery的动态创建的onclick方法

如何将对象类型的 json 数组传递给 MVC 控制器类

如何使用javascript动态地将json数组传递给数据表

python json使用