关于#python#的问题:分割连续json

#如何用python分割多个连接起来的json
(求问)
现有一个字符串如(是由两个json无缝连接而成):

{"cmd":"ONLINE_RANK_COUNT","data":{"count":236},"is_report":false,"msg_id":"875144313051649","send_time":1690223085309}{"cmd":"ENTRY_EFFECT","data":{"basemap_   _url":"https://i0.hdslb.com/bfs/live/mlive/6d38ab463be28a130870c8c43d109473f215963e.png","business":4,"copy_color":"#ffffff","copy_writing":"欢迎\u003c%唐周很乖y%\u003e进入直播间","copy_writing_v2":"欢迎\u003c%唐周很乖y%\u003e进入直播间","effect_silent_time":0,"effective_time":3,"effective_time_new":0,"face":"https://i1.hdslb.com/bfs/face/d2003a3bb5933d03ed25ac5106d8c046d9101563.jpg","highlight_color":"#ffea18","icon_list":[],"id":253,"identities":1,"max_delay_time":7,"mobile_dynamic_url_webp":"","mock_effect":0,"new_style":0,"priority":1,"privilege_type":0,"show_avatar":1,"target_id":1869286411,"trigger_time":1690223084898894800,"uid":3493291370744671,"wealthy_info":null,"web_basemap_url":"https://i0.hdslb.com/bfs/live/mlive/6d38ab463be28a130870c8c43d109473f215963e.png","web_close_time":900,"web_dynamic_url_apng":"","web_dynamic_url_webp":"","web_effect_close":1,"web_effective_time":3},"is_report":false,"msg_id":"875144677431296","send_time":1690223086004} 

该怎么将它分割成:

{"cmd":"ONLINE_RANK_COUNT","data":{"count":236},"is_report":false,"msg_id":"875144313051649","send_time":1690223085309}

{"cmd":"ENTRY_EFFECT","data":{"basemap_   _url":"https://i0.hdslb.com/bfs/live/mlive/6d38ab463be28a130870c8c43d109473f215963e.png","business":4,"copy_color":"#ffffff","copy_writing":"欢迎\u003c%唐周很乖y%\u003e进入直播间","copy_writing_v2":"欢迎\u003c%唐周很乖y%\u003e进入直播间","effect_silent_time":0,"effective_time":3,"effective_time_new":0,"face":"https://i1.hdslb.com/bfs/face/d2003a3bb5933d03ed25ac5106d8c046d9101563.jpg","highlight_color":"#ffea18","icon_list":[],"id":253,"identities":1,"max_delay_time":7,"mobile_dynamic_url_webp":"","mock_effect":0,"new_style":0,"priority":1,"privilege_type":0,"show_avatar":1,"target_id":1869286411,"trigger_time":1690223084898894800,"uid":3493291370744671,"wealthy_info":null,"web_basemap_url":"https://i0.hdslb.com/bfs/live/mlive/6d38ab463be28a130870c8c43d109473f215963e.png","web_close_time":900,"web_dynamic_url_apng":"","web_dynamic_url_webp":"","web_effect_close":1,"web_effective_time":3},"is_report":false,"msg_id":"875144677431296","send_time":1690223086004} 

分割完后可以用json.loads()那种


import json

def multijson_gen(multijson):
    while True:
        try:
            obj = json.loads(multijson)
            yield obj
            return
        except json.JSONDecodeError as e:
            json_str = multijson[:e.pos]
            multijson = multijson[e.pos:]
            if json_str == "":
                return
            yield json.loads(json_str)

base_json_str = """
{"cmd":"ONLINE_RANK_COUNT","data":{"count":236},"is_report":false,"msg_id":"875144313051649","send_time":1690223085309}{"cmd":"ENTRY_EFFECT","data":{"basemap_   _url":"https://i0.hdslb.com/bfs/live/mlive/6d38ab463be28a130870c8c43d109473f215963e.png","business":4,"copy_color":"#ffffff","copy_writing":"欢迎\u003c%唐周很乖y%\u003e进入直播间","copy_writing_v2":"欢迎\u003c%唐周很乖y%\u003e进入直播间","effect_silent_time":0,"effective_time":3,"effective_time_new":0,"face":"https://i1.hdslb.com/bfs/face/d2003a3bb5933d03ed25ac5106d8c046d9101563.jpg","highlight_color":"#ffea18","icon_list":[],"id":253,"identities":1,"max_delay_time":7,"mobile_dynamic_url_webp":"","mock_effect":0,"new_style":0,"priority":1,"privilege_type":0,"show_avatar":1,"target_id":1869286411,"trigger_time":1690223084898894800,"uid":3493291370744671,"wealthy_info":null,"web_basemap_url":"https://i0.hdslb.com/bfs/live/mlive/6d38ab463be28a130870c8c43d109473f215963e.png","web_close_time":900,"web_dynamic_url_apng":"","web_dynamic_url_webp":"","web_effect_close":1,"web_effective_time":3},"is_report":false,"msg_id":"875144677431296","send_time":1690223086004} 
"""
for sub_json in multijson_gen(base_json_str):
    print(sub_json)
不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7511963
  • 你也可以参考下这篇文章:python 解决json.loads()对不标准json格式序列化异常
  • 除此之外, 这篇博客: Python 对象与 JSON 字符串的相互转换中的 1.json.loads() 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

    把 json 格式字符串解码转换成 Python 对象,从 json 到 python 的类型转化对照如下:

    import json
    
    strList = '[1, 2, 3, 4]'
    strDict = '{"city": "北京", "name": "范爷"}'
    json.loads(strList) 
    # [1, 2, 3, 4]
    json.loads(strDict) # json 数据自动按 Unicode 存储
    # {u'city': u'\u5317\u4eac', u'name': u'\u5927\u732b'}
    

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^