解析多个合并的json结构

json文件内容如下:

{"name": "Jarvis", "age": 18, "gender": "Male", "hobbies": ["eat", "drink", "play", "haha"], "work": {"cooker": "I'm a cooker", "cleanner": "I'm not a cleanner"}}{"author": "Ansian J.", "ISBN": "134-adfa-14cg-1wr-ddd", "publish": "2022-01-01 01:02:33"}{"meta": {"code": 1, "msg": "OK"}, "data": {"uuid": "1341345234524524", "success": 1, "msgid": 10086}}

解析代码

import json


def extract_json_structure_data(filename):

    results = []
    contents = []
    stack = []
    with open(filename) as fp:
        for c in fp.read():
            if c in ["\n"]:
                continue
            contents.append(c)
            if c in ["{"]:
                stack.append(c)
            if c in ["}"]:
                stack.pop()
            if len(stack) == 0:
                results.append(json.loads("".join(contents)))
                contents = []
    return results


if __name__ == "__main__":
    results = extract_json_structure_data("multi_data.json")
    for item in results:
        print(json.dumps(item, ensure_ascii=False, indent=4))

解析结果

{
    "name": "Jarvis",
    "age": 18,
    "gender": "Male",
    "hobbies": [
        "eat",
        "drink",
        "play",
        "haha"
    ],
    "work": {
        "cooker": "I'm a cooker",
        "cleanner": "I'm not a cleanner"
    }
}
{
    "author": "Ansian J.",
    "ISBN": "134-adfa-14cg-1wr-ddd",
    "publish": "2022-01-01 01:02:33"
}
{
    "meta": {
        "code": 1,
        "msg": "OK"
    },
    "data": {
        "uuid": "1341345234524524",
        "success": 1,
        "msgid": 10086
    }
}