javascript - 在 JavaScript 中反序列化字典的 JSON 列表

标签 javascript jquery python json cherrypy

我正在使用 CherrPy,并且必须建立 AJAX 连接来检索有关表的信息。 python 代码是:

    @cherrypy.expose
def projects(self):
    c = self.dbConnect()
    projects_list = list()
    projects_version_list = list()

    # Get every products
    c.execute('Select * from T_Projects')
    result = c.fetchall()
    for row in result:

        # Conversion ID to string
        id = self.b10to26(int(str(row).split(",")[0][1:]))
        if len(id)==1:
            id = "AA" + id
        elif len(id)==2:
            id = "A" + id

        # Parse db informations
        name = str(row).split("'")[1] 
        created = str(row).split(",")[2].split("'")[1]

        # Product in dict line
        dict = {"name" : name, "id" : id, "created" : created}

        # Get every product versions
        cmd = ('Select * from T_Projects_Versions where id_project="{}"').format(str(row).split(",")[0][1:])
        c.execute(cmd)
        versions = c.fetchall()
        for row_version in versions:

            # Get ID + Name
            id_version = self.b10to26(int(str(row_version).split(",")[1]))
            if len(id_version)==1:
                id_version = "A" + id_version
            name = str(row_version).split("'")[1]
            created = str(row_version).split(",")[4].split("'")[1]

            # Product version dict line
            dict_version = {"name" : name, "id" : id_version, "created" : created}

            #Put in a list
            projects_version_list.append (dict_version)
        projects_list.append({"dict" : dict, "projects_version_list" : projects_version_list})

    cherrypy.response.headers["Content-Type"] = "application/json"
    return json.dumps(projects_list)

Javascript/Jquery 代码在这里:

for(var i = 0;i < data.length; ++i) //for enumerating array
                {
                     var obj = data[i];
                     for(var propName in obj) //for enumerating the properties of an object
                     {
                         var value = obj[propName];
                         $('#container').append("item : " + i + " : prop : " + propName + " : value : " + value);
                     }
                }

输出是:

item : 0 : prop : dict : value : [object Object]item : 0 : prop : projects_version_list : value : [object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object] ...

JavaScript 部分不起作用。您有什么建议吗?

谢谢!

塞尔维茨基

最佳答案

我几天前解决了这个问题,也许有人会感兴趣。

这是js:

$.get( "/products", function(data) {
        for(var i = 0;i < data.length; ++i) 
        {
            $('.products_body').append("<tr class='header'><td id='name' class='product'>" + data[i]["product"]['name'] + "</td><td class='product'> " + data[i]["product"]['id'] + "</td><td class='product'>" + data[i]["product"]['created'] +  "</td></tr>");
            for(var j = 0;j < data[i]["versions"].length; ++j)
            {
                var value = data[i]["versions"][j];
                $('.products_body').append("<tr class='versions'><td class='version'>" + value['name'] + " </td><td class='version'> " + value['id'] + "</td><td class='version'>" + value['created'] + "</td></tr>");
            }
        }
    })

这是Python:

@cherrypy.expose
def products(self):
    c = self.dbConnect()
    products = list()

    # Get every products
    c.execute('Select * from T_products')
    result = c.fetchall()
    for row in result:
        versions = list()
        # Conversion ID to string
        id = self.b10to26(int(str(row).split(",")[0][1:]))
        if len(id)==1:
            id = "AA" + id
        elif len(id)==2:
            id = "A" + id

        # Parse db informations
        name = str(row).split("'")[1] 
        created = str(row).split(",")[2].split("'")[1]

        # Product in dict line
        product = {"name" : name, "id" : id, "created" : created}

        # Get every product versions
        cmd = ('Select * from T_products_Versions where id_product="{}"').format(str(row).split(",")[0][1:])
        c.execute(cmd)
        cmd_versions = c.fetchall()
        for row_version in cmd_versions:

            # Get ID + Name
            id_version = self.b10to26(int(str(row_version).split(",")[1]))
            if len(id_version)==1:
                id_version = "A" + id_version
            name = str(row_version).split("'")[1]
            created = str(row_version).split(",")[4].split("'")[1]

            # Product version dict line
            version = {"name" : name, "id" : id_version, "created" : created}

            #Put in a list
            versions.append (version)
        products.append({"product" : product, "versions" : versions})

    cherrypy.response.headers["Content-Type"] = "application/json"
    return json.dumps(products)

关于javascript - 在 JavaScript 中反序列化字典的 JSON 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19314349/

相关文章:

javascript - Onclick 与 addEventListener

Python 在特定子字符串前提取一个十进制数

Python - 之后的空格

javascript - 如何访问 this.context.router (ReactJS)

javascript - 使用 lodash 从数组返回对象属性

javascript - 使用 JS 动画元素

javascript - JqueryUI接入修改拖动功能

javascript - 禁用 jQuery 对话框中的控件

javascript - 首次使用后如何触发 Google Places 自动完成结果下拉列表?

python - 创建一个 python 网络抓取工具来获取 Google Play 商店应用程序的元数据