"分析多个在一行的JSON对象"

2024-05-16 06:57:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在分析包含json对象的文件。问题是有些文件在一行中有多个对象。e、 g.:

{"data1": {"data1_inside": "bla{bl\"a"}}{"data1": {"data1_inside": "blabla["}}{"data1": {"data1_inside": "bla{bla"}}{"data1": {"data1_inside": "bla["}}

我已经创建了一个函数,它尝试在没有左括号的情况下解析子字符串,但是值中可能有大括号。我试过通过检查引号的开头和结尾来跳过值,但也有一些值使用了转义引号。对如何处理这个问题有什么想法吗?

我的尝试:

def get_lines(data):
    lines = []
    open_brackets = 0
    start = 0
    is_comment = False
    for index, c in enumerate(data):
        if c == '"':
            is_comment = not is_comment
        elif not is_comment:
            if c == '{':
                if not open_brackets:
                    start = index
                open_brackets += 1

            if c == '}':
                open_brackets -= 1
                if not open_brackets:
                    lines.append(data[start: index+1])

    return lines

Tags: 文件对象dataindexifiscommentnot