【问题标题】:Python - Creating JSON array? and passing to ajaxPython - 创建 JSON 数组?并传递给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"}
]

【问题讨论】:

    标签: python arrays json ajax parsing


    【解决方案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 中允许使用裸列表(即没有封闭对象),但如果不是,您需要为列表命名。
    猜你喜欢
    • 1970-01-01
    • 2020-03-12
    • 1970-01-01
    • 2018-07-03
    • 2018-11-30
    • 1970-01-01
    • 2012-07-29
    • 1970-01-01
    • 2011-01-23
    相关资源
    最近更新 更多