递归解析 JSON

2023-11-26

我有一个使用 Python 创建的大型 JSON 对象,现在需要在网页上显示该信息。我的问题是它的大小;里面有嵌套的数组和对象,并且在点上有几层深。我编写了一个极其不优雅(且有缺陷)的 JavaScript 函数来提取数据,但这对我来说似乎是一个递归问题,不幸的是我还不习惯这样思考。

有谁知道解析读取此类对象的好解决方案?我在这里的目标是真正动态地阅读它,因为我将不得不多次执行此操作(每次对象都会不同,但结构或多或少相同)。目标是获取这些信息并在网页上有意义地显示它。

如果我可以进一步详细说明,请告诉我。

编辑:这是对象。当我发布这篇文章时,我离开了我的电脑,而且它相当大。我已经删除了其中可能敏感的部分。我使用 JSON2 将其解析为字符串以外的其他内容。只是它的大小和嵌套给我带来了问题。



{
    "Loop300": [
        {
            "Loop310": [
                {
                    "N1": {
                        "idCode": "0400", 
                        "idQual": "ZZ", 
                        "name": "REDACTED", 
                        "entIdCode": "SF"
                    }, 
                    "N3": [
                        {
                            "address1": "REDACTED", 
                            "address2": "REDACTED"
                        }
                    ], 
                    "G61": [
                        {
                            "contactFunctionCode": "CN", 
                            "commNumber": "REDACTED", 
                            "commNumQualifier": "TE", 
                            "name": "shipping"
                        }
                    ], 
                    "N4": [
                        {}
                    ]
                }
            ], 
            "L11": [], 
            "S5": {
                "stopReasonCode": "LD", 
                "stopSeqNum": "1"
            }, 
            "Loop350": [
                {
                    "LAD": [], 
                    "OID": {
                        "weight": "161", 
                        "poNum": "ASDF", 
                        "weightCode": "L", 
                        "unitMeasure": "CA", 
                        "refID": "THING", 
                        "quantity": "6"
                    }, 
                    "Loop360": [
                        {
                            "Loop365": [], 
                            "L5": {
                                "lineNum": "1", 
                                "desc": "STUFF"
                            }
                        }
                    ]
                }, 
                {
                    "LAD": [], 
                    "OID": {
                        "weight": "104", 
                        "poNum": "ZXMO", 
                        "weightCode": "L", 
                        "unitMeasure": "CA", 
                        "refID": "STUFF", 
                        "quantity": "6"
                    }, 
                    "Loop360": [
                        {
                            "Loop365": [], 
                            "L5": {
                                "lineNum": "2", 
                                "desc": "STUFF"
                            }
                        }
                    ]
                }, 
                {
                    "LAD": [], 
                    "OID": {
                        "weight": "1833", 
                        "poNum": "ASDF", 
                        "weightCode": "L", 
                        "unitMeasure": "CA", 
                        "refID": "THEBLOB", 
                        "quantity": "40"
                    }, 
                    "Loop360": [
                        {
                            "Loop365": [], 
                            "L5": {
                                "lineNum": "3", 
                                "desc": "STUFF"
                            }
                        }
                    ]
                }, 
                {
                    "LAD": [], 
                    "OID": {
                        "weight": "229", 
                        "poNum": "FDSA", 
                        "weightCode": "L", 
                        "unitMeasure": "CA", 
                        "refID": "BATMAN", 
                        "quantity": "6"
                    }, 
                    "Loop360": [
                        {
                            "Loop365": [], 
                            "L5": {
                                "lineNum": "4", 
                                "desc": "STUFF"
                            }
                        }
                    ]
                }
            ], 
            "AT5": [], 
            "G62": [
                {
                    "date": "20100817", 
                    "datequalifier": "10"
                }, 
                {
                    "date": "20100817", 
                    "datequalifier": "38"
                }
            ], 
            "NTE": [
                {
                    "refCode": "OTH", 
                    "desc": "No Touch"
                }
            ]
        }, 
        {
            "Loop310": [
                {
                    "N1": {
                        "idCode": "9998000006", 
                        "idQual": "ZZ", 
                        "name": "REDACTED", 
                        "entIdCode": "SF"
                    }, 
                    "N3": [
                        {
                            "address1": "REDACTED"
                        }
                    ], 
                    "G61": [
                        {
                            "contactFunctionCode": "CN", 
                            "commNumber": "REDACTED", 
                            "commNumQualifier": "TE", 
                            "name": "REDACTED"
                        }
                    ], 
                    "N4": [
                        {}
                    ]
                }
            ], 
            "L11": [], 
            "S5": {
                "stopReasonCode": "LD", 
                "stopSeqNum": "2"
            }, 
            "Loop350": [
                {
                    "LAD": [], 
                    "OID": {
                        "poNum": "QWERTY", 
                        "refID": "ASDF", 
                        "unitMeasure": "PL", 
                        "quantity": "1"
                    }, 
                    "Loop360": [
                        {
                            "Loop365": [], 
                            "L5": {
                                "lineNum": "1", 
                                "desc": "PORT"
                            }
                        }
                    ]
                }
            ], 
            "AT5": [], 
            "G62": [
                {
                    "date": "20100817", 
                    "datequalifier": "10"
                }, 
                {
                    "date": "20100817", 
                    "datequalifier": "38"
                }
            ], 
            "NTE": [
                {
                    "refCode": "OTH", 
                    "desc": "Driver Count Required"
                }
            ]
        }, 
        {
            "Loop310": [
                {
                    "N1": {
                        "idCode": "9998000070", 
                        "idQual": "ZZ", 
                        "name": "PLACE", 
                        "entIdCode": "ST"
                    }, 
                    "N3": [
                        {
                            "address1": "PLACE"
                        }
                    ], 
                    "G61": [
                        {
                            "contactFunctionCode": "CN", 
                            "commNumber": "XXXXXXXXXX", 
                            "commNumQualifier": "TE", 
                            "name": "X"
                        }
                    ], 
                    "N4": [
                        {}
                    ]
                }
            ], 
            "L11": [], 
            "S5": {
                "stopReasonCode": "UL", 
                "stopSeqNum": "3"
            }, 
            "Loop350": [
                {
                    "LAD": [], 
                    "OID": {
                        "poNum": "JOE", 
                        "refID": "SUPERMAN", 
                        "unitMeasure": "PL", 
                        "quantity": "1"
                    }, 
                    "Loop360": [
                        {
                            "Loop365": [], 
                            "L5": {
                                "lineNum": "1", 
                                "desc": "PORT"
                            }
                        }
                    ]
                }
            ], 
            "AT5": [], 
            "G62": [
                {
                    "date": "20100817", 
                    "datequalifier": "68"
                }, 
                {
                    "date": "20100817", 
                    "datequalifier": "54"
                }
            ], 
            "NTE": [
                {
                    "refCode": "OTH", 
                    "desc": "No Touch"
                }
            ]
        }, 
        {
            "Loop310": [
                {
                    "N1": {
                        "idCode": "0000403803", 
                        "idQual": "ZZ", 
                        "name": "REDACTED", 
                        "entIdCode": "ST"
                    }, 
                    "N3": [
                        {
                            "address1": "REDACTED"
                        }
                    ], 
                    "G61": [
                        {
                            "contactFunctionCode": "CN", 
                            "commNumber": "0000000000", 
                            "commNumQualifier": "TE", 
                            "name": "REDACTED"
                        }
                    ], 
                    "N4": [
                        {}
                    ]
                }
            ], 
            "L11": [
                {
                    "qualifier": "DO", 
                    "refID": "THETHING"
                }
            ], 
            "S5": {
                "stopReasonCode": "UL", 
                "stopSeqNum": "4"
            }, 
            "Loop350": [
                {
                    "LAD": [], 
                    "OID": {
                        "weight": "161", 
                        "poNum": "UIP", 
                        "weightCode": "L", 
                        "unitMeasure": "CA", 
                        "refID": "JACK", 
                        "quantity": "6"
                    }, 
                    "Loop360": [
                        {
                            "Loop365": [], 
                            "L5": {
                                "lineNum": "1", 
                                "desc": "STUFF"
                            }
                        }
                    ]
                }, 
                {
                    "LAD": [], 
                    "OID": {
                        "weight": "104", 
                        "poNum": "JKLM", 
                        "weightCode": "L", 
                        "unitMeasure": "CA", 
                        "refID": "SUSAN", 
                        "quantity": "6"
                    }, 
                    "Loop360": [
                        {
                            "Loop365": [], 
                            "L5": {
                                "lineNum": "2", 
                                "desc": "STUFF"
                            }
                        }
                    ]
                }, 
                {
                    "LAD": [], 
                    "OID": {
                        "weight": "1833", 
                        "poNum": "ASDF", 
                        "weightCode": "L", 
                        "unitMeasure": "CA", 
                        "refID": "JOE", 
                        "quantity": "40"
                    }, 
                    "Loop360": [
                        {
                            "Loop365": [], 
                            "L5": {
                                "lineNum": "3", 
                                "desc": "STUFF"
                            }
                        }
                    ]
                }, 
                {
                    "LAD": [], 
                    "OID": {
                        "weight": "229", 
                        "poNum": "AAAA", 
                        "weightCode": "L", 
                        "unitMeasure": "CA", 
                        "refID": "ASDF", 
                        "quantity": "6"
                    }, 
                    "Loop360": [
                        {
                            "Loop365": [], 
                            "L5": {
                                "lineNum": "4", 
                                "desc": "STUFF"
                            }
                        }
                    ]
                }
            ], 
            "AT5": [], 
            "G62": [
                {
                    "date": "20100817", 
                    "datequalifier": "68"
                }, 
                {
                    "date": "20100817", 
                    "datequalifier": "54"
                }
            ], 
            "NTE": [
                {
                    "refCode": "OTH", 
                    "desc": "Driver Assist Required"
                }
            ]
        }
    ], 
    "SE": {
        "numSegments": "70", 
        "controlNum": "0002"
    }, 
    "Loop100BT": [], 
    "L11": [
        {
            "qualifier": "VD", 
            "refID": "SALLY"
        }, 
        {
            "qualifier": "SI", 
            "refID": "MARK"
        }, 
        {
            "qualifier": "CR", 
            "refID": "JOE"
        }, 
        {
            "qualifier": "RB", 
            "refID": "USD"
        }, 
        {
            "qualifier": "TH", 
            "refID": "REDACTED"
        }
    ], 
    "PLD": [], 
    "L3": {
        "weight": "2328", 
        "advances": "0", 
        "rateQual": "FR", 
        "charge": "05", 
        "freightRate": "", 
        "weightQual": "G", 
        "quantity": "59"
    }, 
    "B2": {
        "ordernum": "12345", 
        "paymethod": "PP", 
        "scac": "XXXX"
    }, 
    "Loop100VI": [
        {
            "N1": {
                "name": "REDACTED", 
                "entIdCode": "AA"
            }, 
            "G61": [
                {
                    "contactFunctionCode": "CN", 
                    "commNumber": "REDACTED", 
                    "contactReference": "0563", 
                    "commNumQualifier": "TE", 
                    "name": "REDACTED"
                }, 
                {
                    "contactFunctionCode": "IC", 
                    "commNumber": "REDACTED", 
                    "commNumQualifier": "EM", 
                    "name": "REDACTED"
                }, 
                {
                    "contactFunctionCode": "ZZ", 
                    "name": "REDACTED"
                }
            ]
        }
    ], 
    "G62": [
        {
            "date": "20100827", 
            "timequalifier": "1", 
            "datequalifier": "64", 
            "time": "1302"
        }
    ], 
    "Loop100CB": [], 
    "NTE": [
        {
            "refCode": "ZZZ", 
            "desc": "26"
        }, 
        {
            "refCode": "OTH", 
            "desc": "No Touch"
        }, 
        {
            "refCode": "OTH", 
            "desc": "Driver Count Required"
        }, 
        {
            "refCode": "OTH", 
            "desc": "No Touch"
        }, 
        {
            "refCode": "OTH", 
            "desc": "Driver Assist Required"
        }
    ], 
    "B2A": {
        "purpose": "00"
    }, 
    "N7": [
        {
            "equipLength": "4800", 
            "equipHeight": "0", 
            "weight": "2328", 
            "equipWidth": "0", 
            "equipNum": "ZZZZ", 
            "equipType": "TV", 
            "weightQual": "G"
        }
    ]
}
  

谢谢, T.J.


你的意思是这样的吗?

function iterateAttributesAndFormHTMLLabels(o){
    var s = '';
    for(var a in o){
        if (typeof o[a] == 'object'){
            s+='<label><font color=green>'+a+':</font></label><br />';
            s+=iterateAttributesAndFormHTMLLabels(o[a]);
        }else{
            s+='<label>'+a+': <font color=blue>'+o[a]+'</font></label><br />';
        }//end if
    }//end for
    return s;
}//end function

data = {...};

var html = iterateAttributesAndFormHTMLLabels(data);

不知道它是否适用于所有浏览器,Chrome 和 firefox 是否适用

干杯, 伊恩

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

递归解析 JSON 的相关文章

  • JavaScript 中的“new”关键字是什么?

    The newJavaScript 中的关键字第一次遇到时可能会很混乱 因为人们倾向于认为 JavaScript 不是面向对象的编程语言 它是什么 它解决什么问题 什么时候合适 什么时候不合适 它做了 5 件事 它创建一个新对象 这个对象的
  • 拖放区缩略图宽度图像大小

    如何更改上传图像的缩略图大小 我在我的javascript中尝试过thumbnailWidth 350 但是这不会增加缩略图大小 而缩略图只是看起来放大了 如何操作图像缩略图大小 HTML section section
  • json 具有自动完成功能?

    我在用Jquery 自动完成 http docs jquery com Plugins Autocomplete autocomplete url or dataoptions 我也在使用 formatItem 我希望输出是
  • 如果 Row1 = 值 1,则更新其他行

    我有一个小的 php 脚本 用于访问 mySql 数据库 我想在数据库中插入新记录之前查看该数字 值 1 是否等于数据库中的记录 这也在第 1 行 所以我想 查看传入的电话号码是否等于数据库中的电话号码 如果是这样 则必须保持电话号码相同的
  • 如果浏览器在 asp .net 中关闭,请从浏览器中注销?

    我的要求有点复杂 用户正在使用 Web 浏览器访问数据库 而在访问数据库时 如果用户关闭活动页面而不是注销会话 该会话需要自动注销 有人可以指导我如何做这个吗 我在母版页中使用了jquery onbeforeunload 我收到消息离开页面
  • 缓存 firestore 中 get 的第一个实现

    我希望 firestore 每次都先从缓存中获取数据 根据 Firestore 文档 传递 缓存 或 服务器 选项必须启用相同的功能 下面的例子 db collection cities where capital true get cac
  • jQuery 验证日期范围问题

    我的代码中有很多地方有成对的相关开始和结束日期字段 范围 我需要验证开始日期早于结束日期 我正在使用 jQuery 验证插件 这是我的代码 http jsfiddle net jinglesthula dESz2 http jsfiddle
  • 卸载/销毁 Angular 延迟加载组件

    我的设置与此处找到的帖子类似http ify io lazy loading in angularjs http ify io lazy loading in angularjs 处理 Angular 中我的应用程序的各种组件的延迟加载 我
  • BigQuery 如何获取 JSON 结构中的值的总和?

    我有以下查询 SELECT JSON EXTRACT json Weights as weight from select Weights blue 1 0 purple 0 0 yellow 1 0 green 1 0 as json 返
  • 光滑的旋转木马不工作

    我一直在尝试简单地实现 Slick Carousel 的工作 我已按照 Git 页面上的说明进行操作 https github com kenwheeler slick https github com kenwheeler slick 这
  • 在 IE10 中禁用捏合放大

    在 IE10 触摸模式下 我希望仅使页面的特定部分可缩放 其余的不应该 我找到了这个 http msdn microsoft com en US library ie hh772044 aspx http msdn microsoft co
  • 单击输入字段会触发窗口调整大小

    我有一个带有徽标 菜单和搜索的标题 当我在桌面上时 我会按该顺序显示所有元素 但如果我的窗口宽度小于 980 像素 菜单会隐藏 有一个切换按钮 并且徽标会与nav并附在徽标之后 如果宽度更大 则徽标将再次分离并附加到 DOM 中的旧位置 w
  • canvas.getContext('2D') 返回空值

    我创建了一个画布并将其命名为getContext 方法 但它返回null为上下文 这是我使用的代码 我在控制台中得到了这个
  • JavaScript:从 JavaScript 调用锚标记的点击事件

    我有一个带有锚标记的页面 在我的 JavaScript 中 我设置HREF锚标记的属性基于一些 if else 条件动态变化 现在我想以编程方式调用锚标记的单击事件 我使用了下面的代码 但没有成功 var proxyImgSrc CostM
  • 在 php、ajax 或 javascript 中加载进度?

    任何人都知道如何在系统仍在服务器端获取数据的同时在客户端显示加载进度以及完成的百分比 例如 当我在客户端按下 确定 按钮时 它会调用服务器端从数据库收集数据 整个过程可能需要2到3分钟 如何在客户端显示加载进度 大约加载完成了多少 我怎样才
  • JavaScript:预期的赋值或函数调用,却看到了一个表达式

    我正在使用 JSHint 来确保我的 JavaScript 是 严格的 但我收到以下错误 预期是赋值或函数调用 但看到的是表达式 关于以下代码 var str A B C D var data var strArr str split fo
  • 如何将当前元素传递给 Knockout.js 绑定中的 Javascript 函数?

    因此 我尝试根据是否选中子复选框 使用 Knockout js 将类添加到元素 为此 我试图通过this作为我的函数的参数 目前 我的精简 DOM 结构如下 tr td td tr
  • Phonegap facebook 插件:android 的各种问题

    我正在尝试将 Phonegap 3 1 与 Phonegap facebook plugin 集成 以使我的应用程序能够使用 facebook 登录 https github com phonegap phonegap facebook p
  • 数字和小数的输入掩码

    在测试我的程序后 我发现了以下错误 我在 sqlserver 中的表包含 价格数字 6 2 我的程序的用户输入价格 555 00 就很好了 但是当他输入 555555 时 这是错误的 所以我需要指定掩码 其中尾数是可选的 0 到 999 小
  • NodeJS:如何获取服务器的端口?

    您经常会看到 Node 的示例 hello world 代码 它创建一个 Http Server 开始侦听端口 然后执行以下操作 console log Server is listening on port 8000 但理想情况下你会想要

随机推荐