代码之家  ›  专栏  ›  技术社区  ›  LiLi Tam

(Python)如何处理复杂的json数据

  •  0
  • LiLi Tam  · 技术社区  · 7 年前

    大家好,我正在做一个关于脸书评论蜘蛛的项目。 然后我找到了脸书图形用户界面。它将返回一个对我来说非常复杂的json文件。

    然后我使用json。加载以获取所有json代码 我不知道如何获取价值

    以及如何处理这些复杂的数据。

    code

    非常感谢你。

    1 回复  |  直到 7 年前
        1
  •  0
  •   spale    7 年前

    我可以想到两种方法,要么你知道你在寻找什么并直接访问它,要么你在键上循环,查看键的值并嵌套另一个循环,直到到达树的末尾。

    您可以使用自调用函数并适当使用jQuery来实现这一点。

    下面是一个示例:

    function get_the_stuff(url)
    {
      $.getJSON(url, function ( data ) {
        my_parser(data) });
    }
    
    function my_parser(node)
    {
      $.each(node, function(key, val) {
        if ( val && typeof val == "object" ) { my_parser(val); }
        else { console.log("key="+key+", val="+val); }
      });
    }
    

    我省略了所有的错误检查。还要确保检查类型适当。你可能需要一些其他的elseif来以不同的方式处理数字、字符串、null或布尔。这只是一个例子。

    编辑:我可能有点错过了主题“Python”。。。很抱歉请随意翻译成python,同样的原则也适用。

    def my_parser(node, depth=0):
        if type(node) == "list":
            for val in node:
                my_parser(val,depth+1)
        elif type(node) == "dict":
            for key in node:
                printf("level=%i key=%s" % ( depth, key ))
                my_parser(node[key], depth+1)
        elif type(node) == "str":
                pritnf("level=%i value=%s" % ( depth, node ))
        elsif type(node) == "int":
                printf("level=%i value=%i % ( depth, node ))
        else:
                printf("level=%i value_unknown_type" % ( depth ))