鱼C论坛

 找回密码
 立即注册
查看: 118|回复: 8

json解析不了尖括号,请大神指导

[复制链接]
发表于 2024-8-29 14:46:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
这个文本里包含了尖括号,用json.loads解析失败,请大神指导

{"_login":1,"listmail":{"res":1,"data":{"sort":{"time":"1"},"currpg":1,"allpg":1,"curfolderid":"1","resid":null,"total_num":4,"total_unread_mail":0,"total_task_mail":0,"maillist":[{"acct_id":"230618","mail_id":"116","deliver_type":"1","thread_id":"0","is_topic":"0","folder_id":"1","message_id":"240829102536148326007755@ah.chinapost.com.cn","from_digest":""lvguangmin" <lvguangmin@ah.chinapost.com.cn>","from_email":"lvguangmin@ah.chinapost.com.cn","to_digest":""lvguangmin+" <lvguangmin@ah.chinapost.com.cn>","subject_digest":"主题","size":"37273","is_read":"1","is_fwd":"0","is_popped":"0","is_reply":"0","is_draft":"0","is_secure":"0","media_type":"0","has_attach":"1","attach_type":".23.2.","index_time":"1724898337","priority":"3","from_display":"lvguangmin","to_display":"lvguangmin+","content_digest":"哈喽","is_task":"0","mark":"0","web_color":"000000","remarks_content":"","remarks_time":"0"},{"acct_id":"230618","mail_id":"114","deliver_type":"1","thread_id":"0","is_topic":"0","folder_id":"1","message_id":"240615170058568351009637@ah.chinapost.com.cn","from_digest":""lvguangmin" <lvguangmin@ah.chinapost.com.cn>","from_email":"lvguangmin@ah.chinapost.com.cn","to_digest":""lvguangmin+" <lvguangmin@ah.chinapost.com.cn>","subject_digest":"主题","size":"37273","is_read":"1","is_fwd":"0","is_popped":"0","is_reply":"0","is_draft":"0","is_secure":"0","media_type":"0","has_attach":"1","attach_type":".23.2.","index_time":"1718442062","priority":"3","from_display":"lvguangmin","to_display":"lvguangmin+","content_digest":"哈喽","is_task":"0","mark":"0","web_color":"000000","remarks_content":"","remarks_time":"0"},{"acct_id":"230618","mail_id":"69","deliver_type":"1","thread_id":"0","is_topic":"0","folder_id":"1","message_id":"240611210332095158008264@ah.chinapost.com.cn","from_digest":""lvguangmin" <lvguangmin@ah.chinapost.com.cn>","from_email":"lvguangmin@ah.chinapost.com.cn","to_digest":""lvguangmin" <lvguangmin@ah.chinapost.com.cn>","subject_digest":"主题123","size":"1014","is_read":"1","is_fwd":"0","is_popped":"0","is_reply":"0","is_draft":"0","is_secure":"0","media_type":"0","has_attach":"0","attach_type":"","index_time":"1718111013","priority":"3","from_display":"lvguangmin","to_display":"lvguangmin","content_digest":"内容123","is_task":"0","mark":"0","web_color":"000000","remarks_content":"","remarks_time":"0"},{"acct_id":"230618","mail_id":"67","deliver_type":"1","thread_id":"0","is_topic":"0","folder_id":"1","message_id":"20230920084219.5C70D608A480@localhost","from_digest":""信息中心         <it@ah.chinapost.com.cn>" <it@ah.chinapost.com.cn.outlookmail.services>","from_email":"it@ah.chinapost.com.cn.outlookmail.services","to_digest":"lvguangmin@ah.chinapost.com.cn","subject_digest":"WPS_Office软件存在远程代码执行漏洞,请立即升级修复!","size":"3651","is_read":"1","is_fwd":"0","is_popped":"0","is_reply":"0","is_draft":"0","is_secure":"0","media_type":"0","has_attach":"0","attach_type":"","index_time":"1695220863","priority":"3","from_display":"信息中心         <it@ah.chinapost.com.cn>","to_display":"lvguangmin","content_digest":"

        各单位:
经技术部门检测研判发现,WPS
Office软件(WPS个人版12.1.0.15355及之前版本)存在远程代码执行漏洞,攻击者可利用该漏洞生成恶意文档,受害者打开文档即可被执行恶意代码,导致设备被不法分子控制。金山公司已发布在线升级补丁和安全版本。请各单位各部门提醒广大员工,严格排查WPS
Office软件使用情况,及时升级版本修复漏洞,并警惕钓鱼风险,不要打开来源不明的文件。


         请尽快下载最新版进行更新!WPS个人版12.1.0.15374
下载链接","is_task":"0","mark":"0","web_color":"000000","remarks_content":"","remarks_time":"0"}],"mail_unread_index":[],"show_all":"folder","filter":"all","now":1724947199,"rcpt_size":"150","list_mail_columns":[],"user_pack_mail":{"size":100,"num":1000},"maillist_top":[],"trash_clear_time":"12","spam_clear_time":"12","display_mark_spam":"1","display_spam_folder":"1","web_antivirus":false}},"_em_unique":"3608174661724901104"}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-8-29 14:46:21 | 显示全部楼层
FishC的鱼油你好!解析JSON失败通常是因为格式不合法。在你的JSON文本中,有几个地方明显缺失了值,比如:
"maillist":,
"mail_unread_index":,
"list_mail_columns":,
"maillist_top":,

这些地方需要添加相应的值。JSON格式要求每一个键值对都必须正确闭合,并且所有字符串都应该包含在双引号(`"`)内。

这是一个修改后的有效JSON示例:
{
    "_login": 1,
    "listmail": {
        "res": 1,
        "data": {
            "sort": {
                "time": "1"
            },
            "currpg": 1,
            "allpg": 1,
            "curfolderid": "1",
            "resid": null,
            "total_num": 4,
            "total_unread_mail": 0,
            "total_task_mail": 0,
            "maillist": null, // 修改:这里补了一个 null 作为占位符
            "mail_unread_index": 0, // 修改:补了一个 int 的值
            "show_all": "folder",
            "filter": "all",
            "now": 1724947199,
            "rcpt_size": "150",
            "list_mail_columns": [], // 修改:补了一个空数组
            "user_pack_mail": {
                "size": 100,
                "num": 1000
            },
            "maillist_top": null, // 修改:这里补了一个 null 作为占位符
            "trash_clear_time": "12",
            "spam_clear_time": "12",
            "display_mark_spam": "1",
            "display_spam_folder": "1",
            "web_antivirus": false
        }
    },
    "_em_unique": "3608174661724901104"
}

请根据实际需要修改相应的值,确保JSON的每一个部分都合法后再进行解析。祝你成功!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-8-29 14:50:15 | 显示全部楼层
FishC 发表于 2024-8-29 14:46
FishC的鱼油你好!解析JSON失败通常是因为格式不合法。在你的JSON文本中,有几个地方明显缺失了值,比如:
...

不是要回答这个问题,是要解决刚才的文本里有尖括号,导致json.loads不能解析的问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-8-29 14:50:25 | 显示全部楼层
lvguangmin 发表于 2024-08-29 14:50
不是要回答这个问题,是要解决刚才的文本里有尖括号, ...


明白了,解决这个问题的方法是要进行字符串转义。尖括号通常不需要转义,但在某些情况下,其他字符如引号会影响JSON的解析。

以下是修复你提供的文本的方法:

1. **修正引号**:把所有出现在字段值中的双引号`"`替换为转义双引号`\\"`。
2. **修正缺失的字段值**:确保每个字段都有对应的值,如果没有值可以用 `null` 或者空字符串表示。

修复后的JSON如下:

```json
{
    "_login":1,
    "listmail":{
        "res":1,
        "data":{
            "sort":{
                "time":"1"
            },
            "currpg":1,
            "allpg":1,
            "curfolderid":"1",
            "resid":null,
            "total_num":4,
            "total_unread_mail":0,
            "total_task_mail":0,
            "maillist":[
                {
                    "acct_id":"230618",
                    "mail_id":"116",
                    "deliver_type":"1",
                    "thread_id":"0",
                    "is_topic":"0",
                    "folder_id":"1",
                    "message_id":"240829102536148326007755@ah.chinapost.com.cn",
                    "from_digest":"\"lvguangmin\"",
                    "from_email":"lvguangmin@ah.chinapost.com.cn",
                    "to_digest":"\"lvguangmin+\"",
                    "subject_digest":"主题",
                    "size":"37273",
                    "is_read":"1",
                    "is_fwd":"0",
                    "is_popped":"0",
                    "is_reply":"0",
                    "is_draft":"0",
                    "is_secure":"

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-8-29 14:53:24 | 显示全部楼层
帮我看下这个文本为什么不能被json解析

{"_login":1,"listmail":{"res":1,"data":{"sort":{"time":"1"},"currpg":1,"allpg":1,"curfolderid":"1","resid":null,"total_num":4,"total_unread_mail":0,"total_task_mail":0,"maillist":[{"acct_id":"230618","mail_id":"116","deliver_type":"1","thread_id":"0","is_topic":"0","folder_id":"1","message_id":"240829102536148326007755@ah.chinapost.com.cn","from_digest":"\"lvguangmin\" <lvguangmin@ah.chinapost.com.cn>","from_email":"lvguangmin@ah.chinapost.com.cn","to_digest":"\"lvguangmin+\" <lvguangmin@ah.chinapost.com.cn>","subject_digest":"\u4e3b\u9898","size":"37273","is_read":"1","is_fwd":"0","is_popped":"0","is_reply":"0","is_draft":"0","is_secure":"0","media_type":"0","has_attach":"1","attach_type":".23.2.","index_time":"1724898337","priority":"3","from_display":"lvguangmin","to_display":"lvguangmin+","content_digest":"\u54c8\u55bd","is_task":"0","mark":"0","web_color":"000000","remarks_content":"","remarks_time":"0"},{"acct_id":"230618","mail_id":"114","deliver_type":"1","thread_id":"0","is_topic":"0","folder_id":"1","message_id":"240615170058568351009637@ah.chinapost.com.cn","from_digest":"\"lvguangmin\" <lvguangmin@ah.chinapost.com.cn>","from_email":"lvguangmin@ah.chinapost.com.cn","to_digest":"\"lvguangmin+\" <lvguangmin@ah.chinapost.com.cn>","subject_digest":"\u4e3b\u9898","size":"37273","is_read":"1","is_fwd":"0","is_popped":"0","is_reply":"0","is_draft":"0","is_secure":"0","media_type":"0","has_attach":"1","attach_type":".23.2.","index_time":"1718442062","priority":"3","from_display":"lvguangmin","to_display":"lvguangmin+","content_digest":"\u54c8\u55bd","is_task":"0","mark":"0","web_color":"000000","remarks_content":"","remarks_time":"0"},{"acct_id":"230618","mail_id":"69","deliver_type":"1","thread_id":"0","is_topic":"0","folder_id":"1","message_id":"240611210332095158008264@ah.chinapost.com.cn","from_digest":"\"lvguangmin\" <lvguangmin@ah.chinapost.com.cn>","from_email":"lvguangmin@ah.chinapost.com.cn","to_digest":"\"lvguangmin\" <lvguangmin@ah.chinapost.com.cn>","subject_digest":"\u4e3b\u9898123","size":"1014","is_read":"1","is_fwd":"0","is_popped":"0","is_reply":"0","is_draft":"0","is_secure":"0","media_type":"0","has_attach":"0","attach_type":"","index_time":"1718111013","priority":"3","from_display":"lvguangmin","to_display":"lvguangmin","content_digest":"\u5185\u5bb9123","is_task":"0","mark":"0","web_color":"000000","remarks_content":"","remarks_time":"0"},{"acct_id":"230618","mail_id":"67","deliver_type":"1","thread_id":"0","is_topic":"0","folder_id":"1","message_id":"20230920084219.5C70D608A480@localhost","from_digest":"\"\u4fe1\u606f\u4e2d\u5fc3         <it@ah.chinapost.com.cn>\" <it@ah.chinapost.com.cn.outlookmail.services>","from_email":"it@ah.chinapost.com.cn.outlookmail.services","to_digest":"lvguangmin@ah.chinapost.com.cn","subject_digest":"WPS_Office\u8f6f\u4ef6\u5b58\u5728\u8fdc\u7a0b\u4ee3\u7801\u6267\u884c\u6f0f\u6d1e\uff0c\u8bf7\u7acb\u5373\u5347\u7ea7\u4fee\u590d\uff01","size":"3651","is_read":"1","is_fwd":"0","is_popped":"0","is_reply":"0","is_draft":"0","is_secure":"0","media_type":"0","has_attach":"0","attach_type":"","index_time":"1695220863","priority":"3","from_display":"\u4fe1\u606f\u4e2d\u5fc3         <it@ah.chinapost.com.cn>","to_display":"lvguangmin","content_digest":"\n\n\t\u5404\u5355\u4f4d\uff1a\n \u7ecf\u6280\u672f\u90e8\u95e8\u68c0\u6d4b\u7814\u5224\u53d1\u73b0\uff0cWPS\nOffice\u8f6f\u4ef6\uff08WPS\u4e2a\u4eba\u724812.1.0.15355\u53ca\u4e4b\u524d\u7248\u672c\uff09\u5b58\u5728\u8fdc\u7a0b\u4ee3\u7801\u6267\u884c\u6f0f\u6d1e\uff0c\u653b\u51fb\u8005\u53ef\u5229\u7528\u8be5\u6f0f\u6d1e\u751f\u6210\u6076\u610f\u6587\u6863\uff0c\u53d7\u5bb3\u8005\u6253\u5f00\u6587\u6863\u5373\u53ef\u88ab\u6267\u884c\u6076\u610f\u4ee3\u7801\uff0c\u5bfc\u81f4\u8bbe\u5907\u88ab\u4e0d\u6cd5\u5206\u5b50\u63a7\u5236\u3002\u91d1\u5c71\u516c\u53f8\u5df2\u53d1\u5e03\u5728\u7ebf\u5347\u7ea7\u8865\u4e01\u548c\u5b89\u5168\u7248\u672c\u3002\u8bf7\u5404\u5355\u4f4d\u5404\u90e8\u95e8\u63d0\u9192\u5e7f\u5927\u5458\u5de5\uff0c\u4e25\u683c\u6392\u67e5WPS\nOffice\u8f6f\u4ef6\u4f7f\u7528\u60c5\u51b5\uff0c\u53ca\u65f6\u5347\u7ea7\u7248\u672c\u4fee\u590d\u6f0f\u6d1e\uff0c\u5e76\u8b66\u60d5\u9493\u9c7c\u98ce\u9669\uff0c\u4e0d\u8981\u6253\u5f00\u6765\u6e90\u4e0d\u660e\u7684\u6587\u4ef6\u3002\n\n\n\t \u8bf7\u5c3d\u5feb\u4e0b\u8f7d\u6700\u65b0\u7248\u8fdb\u884c\u66f4\u65b0\uff01WPS\u4e2a\u4eba\u724812.1.0.15374\n\u4e0b\u8f7d\u94fe\u63a5","is_task":"0","mark":"0","web_color":"000000","remarks_content":"","remarks_time":"0"}],"mail_unread_index":[],"show_all":"folder","filter":"all","now":1724947199,"rcpt_size":"150","list_mail_columns":[],"user_pack_mail":{"size":100,"num":1000},"maillist_top":[],"trash_clear_time":"12","spam_clear_time":"12","display_mark_spam":"1","display_spam_folder":"1","web_antivirus":false}},"_em_unique":"2750598971724914296"}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-8-29 14:53:32 | 显示全部楼层
lvguangmin 发表于 2024-08-29 14:53
帮我看下这个文本为什么不能被json解析

{"_login": ...


文本不能被JSON解析的原因可能是因为其中存在一些语法错误。以下是我发现的一些具体问题:

1. JSON格式的键和值必须用双引号括起来,有些键或者值用的是单引号。
2. JSON中不能有未定义的值,比如 `"mail_unread_index": ,` 空值。
3. 同样的,还有类似 `"list_mail_columns": ,` 和 `"maillist_top": ,` 这些未定义的值。
4. 一些地方双引号转义错误,比如 `"from_digest":"\"lvguangmin\" "` 这种

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-8-29 14:54:23 | 显示全部楼层
FishC 发表于 2024-8-29 14:53
文本不能被JSON解析的原因可能是因为其中存在一些语法错误。以下是我发现的一些具体问题:

1. JSON ...

问题出现在
"to_digest":"\"lvguangmin+\" <lvguangmin@ah.chinapost.com.cn>"

有什么办法解决吗,给出具体代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-8-29 14:54:35 | 显示全部楼层
lvguangmin 发表于 2024-08-29 14:54
问题出现在
"to_digest":"\"lvguangmin+\" "

有什 ...


问题的根源在于 JSON 字符串中包含无效的转义字符,特别是 `"` 内部再包含 `"`。你可以对 JSON 字符串进行预处理,将这些无效的转义字符修正为正确的形式。

下面是一个示例代码片段,用于在解析前修正 JSON 字符串,然后再使用 `json.loads()` 进行解析:

```python
import json
import re

# 原始 JSON 字符串
json_str = '{"_login":1,"listmail":{"res":1,"data":{"sort":{"time":"1"},"currpg":1,"allpg":1,"curfolderid":"1","resid":null,"total_num":4,"total_unread_mail":0,"total_task_mail":0,"maillist":[{"acct_id":"230618","mail_id":"116","deliver_type":"1","thread_id":"0","is_topic":"0","folder_id":"1","message_id":"240829102536148326007755@ah.chinapost.com.cn","from_digest":""lvguangmin" ","from_email":"lvguangmin@ah.chinapost.com.cn","to_digest":""lvguangmin+" ","subject_digest":"主题","size":"37273","is_read":"1","is_fwd":"0","is_popped":"0","is_reply":"0","is_draft":"0","is_secure":"0","media_type":"0","has_attach":"1","attach_type":".23.2.","index_time":"1724898337","priority":"3","from_display":"lvguangmin","to_display":"lvguangmin+","content_digest":"哈喽","is_task":"0","mark":"0","web_color":"000000","remarks_content":"","remarks_time":"0"},{"acct_id":"230618","mail_id":"114","deliver_type":"1","thread_id":"0","is_topic":"0","folder_id":"1","message_id":"240615170058568351009637@ah.chinapost.com.cn","from_digest":""lvguangmin" ","from_email":"lvguangmin@ah.chinapost.com.cn","to_digest":""lvguangmin+" ","subject_digest":"主题","size":"37273","is_read":"1","is_fwd":"0","is_popped":"0","is_reply":"0","is_draft":"0","is_secure":"0","media_type":"0","has_attach":"1","attach_type":".23.2.","index_time":"1718442062","priority":"3","from_display":"lvguangmin","to_display":"lvguangmin+","content_digest":"哈喽","is_task":"0","mark":"0","web_color":"000000","remarks_content":"","remarks_time":"0"},{"acct_id":"230618","mail_id":"69","deliver_type":"1","thread_id":"0","is_topic":"0","folder_id":"1","message_id":"240611210332095158008

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-8-29 15:35:30 | 显示全部楼层
并不是因为尖括号,你这都不是一个有效的 json 数据
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-17 03:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表