• 技术文章 >Python技术 >Python基础教程

    python解析json文件方法

    小妮浅浅小妮浅浅2021-01-29 14:42:56原创4319

    我们在获取一份第三方的数据后,需要进行数据的分析,但发现它是json的文件形式并不能直接使用。这就需要用到解析的方法,我们在python中就可以完成这样操作。下面就json说进行简单说明,然后理清解析json文件 的思路,最后把相关的解析代码分享给大家,一起往下看具体内容。

    1.json说明

    json就是一种长得像嵌套字典的字符串。数据被“{}”和“[]”层层包裹,需要“拆包”才能拿到我们需要的数据。

    两种结构:

    (1)“名称/值”对的集合(A collection of name/value pairs)。不同的编程语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。

    (2)值的有序列表(An ordered list of values)。在大部分语言中,它被实现为数组(array),矢量(vector),列表(list),序列(sequence)。

    2.解析思路

    (1)新建两个函数A和B。

    (2)函数 A处理字典数据,被调用后,判断传递的参数,如果参数为字典,则调用自身;

    (3)如果是列表或者元组,则调用列表处理函数B;

    (4)函数 B处理列表,被调用后,判断传递的参数,如果参数为列表或者元组,则调用自身;

    (5)如果是字典,则调用字典处理函数A。

    3.实例

    代码中的get_target_value函数为A函数,_get_value为B函数。

    # 处理嵌套json文件中指定关键字
    # 处理字典值
    def get_target_value(key, dic, tmp_list):
        """
        :param key: 目标key值
        :param dic: JSON数据
        :param tmp_list: 用于存储获取的数据
        :return: list
        """
        if not isinstance(dic, dict) or not isinstance(tmp_list, list):  # 对传入数据进行格式校验
            return 'argv[1] not an dict or argv[-1] not an list '
     
        if key in dic.keys():
            tmp_list.append(dic[key])  # 传入数据存在则存入tmp_list
     
        for value in dic.values():  # 传入数据不符合则对其value值进行遍历
            if isinstance(value, dict):
                get_target_value(key, value, tmp_list)  # 传入数据的value值是字典,则直接调用自身
            elif isinstance(value, (list, tuple)):
                _get_value(key, value, tmp_list)  # 传入数据的value值是列表或者元组,则调用_get_value
        return tmp_list
     
     
    # 处理元组或列表值
    def _get_value(key, val, tmp_list):
        for val_ in val:
            if isinstance(val_, dict):
                get_target_value(key, val_, tmp_list)  # 传入数据的value值是字典,则调用get_target_value
            elif isinstance(val_, (list, tuple)):
                _get_value(key, val_, tmp_list)

    以上就是python解析json文件的方法,大家可以先对解析的流程进行理解,在弄清楚基本的步骤后,就可以展开上面的解析json操作啦。

    专题推荐:python解析json
    品易云
    上一篇:python中numpy数组与list如何相互转换? 下一篇:python中numpy数组是什么?

    相关文章推荐

    • json格式化工具有哪些• python json模块是什么?• python中字典与json相互转换的方法• python中jsonpath模块有何用法?

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网