记一次serde解析json的玄学问题
最近在调用博客园的API遇到了玄学问题,解析API返回的问题时好时坏,基本情况是第一次正常解析,紧接着调用就是就开始报错,现记录问题和排查过程。
情况复现
以下为第一次调用,省略后边的内容
>$ cnb news list
iPhone 18 Pro 仍采用居中缩小版灵动岛、苹果 AI Pin 最快明年亮相
近日,关于 iPhone 18 Pro 前置方案的讨论出现反转,多家媒体援引博主 @刹那数码爆料称,iPhone 18 Pro 仍采用居中缩小版灵动岛。 刹那数码表示,所谓「左侧挖孔前置摄像头」的说法是一次「彻头彻尾的误传」。 他在微博中指出,最初是一家英文媒体在社交平台上出现翻译或理解偏差,将「左
[#813396][posted@ [4小时前]][浏览:13][评论:0][点赞:0]
又怎么了?沐瞳多款游戏美服或暂时下架、或计划迁移服务器
GameLook 报道/去年 1 月,因为美国闹的沸沸扬扬的 TikTok“不卖就禁用”法案引发风波,字节跳动旗下《MLBB》《Watcher of Reamls》《Marvel Snap》等多款游戏美国服务器停止运营。当月月底,随着 TikTok 恢复对美国用户的服务,多款游戏也恢复在美运营,重新
[#813395][posted@ [4小时前]][浏览:9][评论:0][点赞:0]
紧接着在调用一次:
>$ cnb news list
Error: error decoding response body
Caused by:
trailing input at line 1 column 690
神奇的故事开始了,报错了。
排查JSON串
trailing input at line 1 column 629,报错的意思是JSON 在合法结束后,还有多余的内容。难道是返回的JSON串有问题?
先获取原始的JSON
[{"Id":813396,"Title":"iPhone 18 Pro 仍采用居中缩小版灵动岛、苹果 AI Pin 最快明年亮相","Summary":"近日,关于 iPhone 18 Pro 前置方案的讨论出现反转,多家媒体援引博主 @刹那数码爆料称,iPhone 18 Pro 仍采用居中缩小版灵动岛。 刹那数码表示,所谓「左侧挖孔前置摄像头」的说法是一次「彻头彻尾的误传」。 他在微博中指出,最初是一家英文媒体在社交平台上出现翻译或理解偏差,将「左","TopicId":4507,"TopicIcon":"https://img2024.cnblogs.com/news_topic/20250920120315354-1705513294.jpg","ViewCount":13,"CommentCount":0,"DiggCount":0,"DateAdded":"2026-01-22T14:18:00+08:00"},{"Id":813395,"Title":"又怎么了?沐瞳多款游戏美服或暂时下架、或计划迁移服务器","Summary":"GameLook 报道/去年 1 月,因为美国闹的沸沸扬扬的 TikTok“不卖就禁用”法案引发风波,字节跳动旗下《MLBB》《Watcher of Reamls》《Marvel Snap》等多款游戏美国服务器停止运营。当月月底,随着 TikTok 恢复对美国用户的服务,多款游戏也恢复在美运营,重新","TopicId":3037,"TopicIcon":"https://img2023.cnblogs.com/news_topic/20230425141319204-576309608.png","ViewCount":9,"CommentCount":0,"DiggCount":0,"DateAdded":"2026-01-22T14:10:00+08:00"},{"Id":813394,"Title":"月球上的射电望远镜","Summary":"如果一切顺利,2027 年初 SpaceX 将把 LuSEE-Night 发射到月球背面。LuSEE-Night 代表 Lunar Surface Electromagnetics Experiment–Night,它将利用 Firefly Aerospace 的着陆器 Blue Ghost M","TopicId":319,"TopicIcon":"https://img2022.cnblogs.com/news_topic/20220811222259068-732048061.jpg","ViewCount":8,"CommentCount":0,"DiggCount":0,"DateAdded":"2026-01-22T13:55:00+08:00"},{"Id":813393,"Title":"大多数 CEO 报告 AI 投资零回报","Summary":"普华永道(PwC)调查了逾 4500 位 CEO ,发现尽管在 AI 上投入了大量资金,但大部分 CEO 表示 AI 投资未带来收入增长或成本降低。接受调查的 4454 位商界领袖中只有 12% 同时实现了成本降低和收入增长,56% 既没有降低成本也没有增加收入,26% 实现了成本降低,但类似比例的","TopicId":1268,"TopicIcon":"https://img2022.cnblogs.com/news_topic/20220606141755761-1777331107.png","ViewCount":20,"CommentCount":0,"DiggCount":0,"DateAdded":"2026-01-22T13:47:00+08:00"},{"Id":813392,"Title":"cURL 因 AI Slop 将关闭 Bug 悬赏项目","Summary":"为减少 AI Slop 报告数量,cURL 项目将在一月底终止 Bug 悬赏项目。cURL 维护者 Daniel Stenberg 表示,“为避免被拖下去我们必须努力阻止这股洪流。”cURL 是一个广泛使用的互联网基础工具,几乎被每一个联网的设备和系统使用。今年早些时候,cURL 项目披露收到了大量","TopicId":2989,"TopicIcon":"https://img2023.cnblogs.com/news_topic/20230327132140272-557361565.png","ViewCount":17,"CommentCount":0,"DiggCount":0,"DateAdded":"2026-01-22T13:42:00+08:00"},{"Id":813391,"Title":"Palantir CEO 称 AI 让大规模移民过时","Summary":"Palantir CEO Alex Karp 在达沃斯世界经济论坛的一个讨论会上表示,AI 将取代大量工作,让大规模移民变得过时。他认为白领和蓝领的地位将出现翻转,“你们国家的公民将拥有充足的就业机会,尤其是接受过职业技能培训的人。我认为目前的趋势确实让人很难想象,除非具备非常专业的技能,否则为什么","TopicId":664,"TopicIcon":"https://img2018.cnblogs.com/news_topic/20190215191558357-305490008.png","ViewCount":11,"CommentCount":0,"DiggCount":0,"DateAdded":"2026-01-22T13:36:00+08:00"},{"Id":813390,"Title":"黑中介10天换35个马甲发虚假高薪岗,BOSS直聘:账号已被冻结","Summary":"界面新闻记者 | 宋佳楠 界面新闻获悉,BOSS 直聘日前针对黑中介发布的虚假高薪招聘进行了专项治理。该行动重点覆盖操作工/普工、安检员、服务员、送餐员等主流蓝领岗位,目前平台日均拦截发布异常高薪岗位的招聘者超 300 人。2025 年第四季度,平台共处置 7000 多个虚标职位。 公告显示,一个黑","TopicId":706,"TopicIcon":"https://images2017.cnblogs.com/news_topic/20170803083046537-409488424.png","ViewCount":30,"CommentCount":0,"DiggCount":0,"DateAdded":"2026-01-22T13:30:00+08:00"},{"Id":813389,"Title":"中国团队首次Nature子刊发布医疗AI标准,未来医生MedGPT全球夺冠","Summary":"衡宇发自凹非寺 量子位 | 公众号 QbitAI 中国团队首次在全球顶尖期刊发表“大模型+医疗”领域的相关标准研究! 作为 Nature 体系中专注于数字医疗的旗舰期刊,《npj Digital Medicine》(JCR 影响因子 15.1,中科院医学大类 1 区 Top 期刊)此次收录的 CSE","TopicId":319,"TopicIcon":"https://img2022.cnblogs.com/news_topic/20220811222259068-732048061.jpg","ViewCount":39,"CommentCount":0,"DiggCount":1,"DateAdded":"2026-01-22T13:23:00+08:00"},{"Id":813388,"Title":"马斯克罕见低头:开源推荐算法,自嘲“很烂”不过未来月更","Summary":"就现在,GitHub 已经能完整看到马斯克开源的推荐算法系统了。 开源文件里明确表示,这是一个几乎完全由 AI 模型驱动的算法系统。我们移除了所有人工设计特征和绝大多数启发式规则。 消息一出,整个社区立刻沸腾了,最高赞上去就是一顿猛夸:incredible!没有其他平台能做到如此透明。 马斯克本人也","TopicId":570,"TopicIcon":"https://images0.cnblogs.com/news_topic/20150702090016187.png","ViewCount":68,"CommentCount":0,"DiggCount":0,"DateAdded":"2026-01-22T13:15:00+08:00"},{"Id":813387,"Title":"微软打包收购OpenAI?就差一点!","Summary":"克雷西鹭羽发自凹非寺 量子位 | 公众号 QbitAI 太抓马了!奥特曼的宫斗大戏,竟然还有内幕? 就在奥特曼被董事会罢免的那个周末,微软差点来了一波雇佣式收购。 短短一天,资金、法律文书就全部到位,连名字都想好了…… 但比起其他雇佣式收购,微软的这波操作更像是项庄舞剑,当中的沛公,则是 OpenA","TopicId":2,"TopicIcon":"https://img2023.cnblogs.com/news_topic/20230719081359678-892461041.png","ViewCount":68,"CommentCount":0,"DiggCount":0,"DateAdded":"2026-01-22T13:08:00+08:00"},{"Id":813386,"Title":"DeepSeek-R2要来了?","Summary":"新智元报道 编辑:Aeneas KingHZ DeepSeek-R1 发布一周年之际,核心算法库惊现 MODEL1,是 V4 还是 R2? 2025 年 1 月 20 日,DeepSeek-R1 正式发布。从此,国产大模型第一次走到了全球舞台的核心位置,开启了开源时代。 而就在今天深夜,开发者社区沸","TopicId":3295,"TopicIcon":"https://img2023.cnblogs.com/news_topic/20231206154557865-604585116.png","ViewCount":114,"CommentCount":0,"DiggCount":0,"DateAdded":"2026-01-22T13:00:00+08:00"}]
就上边一长串,大概在"https://img2023.cnblogs.com/news_topic/20230425141319204-576309608.png"里面,看着也没啥问题。
在线网站校验JSON,结果也没问题
现在说明,JSON串没问题,能解析成功,说明代码也没啥问题。都没问题,肯定就有问题,首先怀疑的是异步导致的读取输出流不完整???
添加代码,读取成text格式,打印,还有解析结果。
use anyhow::Result;
use reqwest::{Client, Response};
use serde::Serialize;
use crate::{api::urls::OPENAPI, models::news::NewsInfo, tools::IntoAnyhowResult};
pub async fn list_news(c: &Client, page: impl Serialize + Send + Sync) -> Result<Vec<NewsInfo>> {
let res = raw_list_news(c, page).await?.text().await?;
println!("res: {}", res);
Ok(serde_json::from_str(&res)?)
// raw_list_news(c, page)
// .await?
// .json()
// .await
// .into_anyhow_result()
}
pub async fn raw_list_news(c: &Client, page: impl Serialize + Send + Sync) -> Result<Response> {
let url = format!("{}/{}", OPENAPI, "NewsItems");
c.get(url).query(&page).send().await.into_anyhow_result()
}
外部调用的是list_news函数。源代码注释掉,添加调试代码。
>$ cargo run --bin cnb -- news list --page-index 2 --page-size 12
Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.07s
Running `target/debug/cnb news list --page-index 2 --page-size 12`
res: [{"Id":813396,"Title":"iPhone 18 Pro 仍采用居中缩小版灵动岛、苹果 AI Pin 最快明年亮相","Summary":"近日,关于 iPhone 18 Pro 前置方案的讨论出现反转,多家媒体援引博主 @刹那数码爆料称,iPhone 18 Pro 仍采用居中缩小版灵动岛。 刹那数码表示,所谓「左侧挖孔前置摄像头」的说法是一次「彻头彻尾的误传」。 他在微博中指出,最初是一家英文媒体在社交平台上出现翻译或理解偏差,将「左","TopicId":4507,"TopicIcon":"https://img2024.cnblogs.com/news_topic/20250920120315354-1705513294.jpg","ViewCount":16,"CommentCount":0,"DiggCount":0,"DateAdded":"2026-01-22T14:18:00"},{"Id":813395,"Title":"又怎么了?沐瞳多款游戏美服或暂时下架、或计划迁移服务器","Summary":"GameLook 报道/去年 1 月,因为美国闹的沸沸扬扬的 TikTok“不卖就禁用”法案引发风波,字节跳动旗下《MLBB》《Watcher of Reamls》《Marvel Snap》等多款游戏美国服务器停止运营。当月月底,随着 TikTok 恢复对美国用户的服务,多款游戏也恢复在美运营,重新","TopicId":3037,"TopicIcon":"https://img2023.cnblogs.com/news_topic/20230425141319204-576309608.png","ViewCount":11,"CommentCount":0,"DiggCount":0,"DateAdded":"2026-01-22T14:10:00"},{"Id":813394,"Title":"月球上的射电望远镜","Summary":"如果一切顺利,2027 年初 SpaceX 将把 LuSEE-Night 发射到月球背面。LuSEE-Night 代表 Lunar Surface Electromagnetics Experiment–Night,它将利用 Firefly Aerospace 的着陆器 Blue Ghost M","TopicId":319,"TopicIcon":"https://img2022.cnblogs.com/news_topic/20220811222259068-732048061.jpg","ViewCount":10,"CommentCount":0,"DiggCount":0,"DateAdded":"2026-01-22T13:55:00"},{"Id":813393,"Title":"大多数 CEO 报告 AI 投资零回报","Summary":"普华永道(PwC)调查了逾 4500 位 CEO ,发现尽管在 AI 上投入了大量资金,但大部分 CEO 表示 AI 投资未带来收入增长或成本降低。接受调查的 4454 位商界领袖中只有 12% 同时实现了成本降低和收入增长,56% 既没有降低成本也没有增加收入,26% 实现了成本降低,但类似比例的","TopicId":1268,"TopicIcon":"https://img2022.cnblogs.com/news_topic/20220606141755761-1777331107.png","ViewCount":23,"CommentCount":0,"DiggCount":0,"DateAdded":"2026-01-22T13:47:00"},{"Id":813392,"Title":"cURL 因 AI Slop 将关闭 Bug 悬赏项目","Summary":"为减少 AI Slop 报告数量,cURL 项目将在一月底终止 Bug 悬赏项目。cURL 维护者 Daniel Stenberg 表示,“为避免被拖下去我们必须努力阻止这股洪流。”cURL 是一个广泛使用的互联网基础工具,几乎被每一个联网的设备和系统使用。今年早些时候,cURL 项目披露收到了大量","TopicId":2989,"TopicIcon":"https://img2023.cnblogs.com/news_topic/20230327132140272-557361565.png","ViewCount":18,"CommentCount":0,"DiggCount":0,"DateAdded":"2026-01-22T13:42:00"},{"Id":813391,"Title":"Palantir CEO 称 AI 让大规模移民过时","Summary":"Palantir CEO Alex Karp 在达沃斯世界经济论坛的一个讨论会上表示,AI 将取代大量工作,让大规模移民变得过时。他认为白领和蓝领的地位将出现翻转,“你们国家的公民将拥有充足的就业机会,尤其是接受过职业技能培训的人。我认为目前的趋势确实让人很难想象,除非具备非常专业的技能,否则为什么","TopicId":664,"TopicIcon":"https://img2018.cnblogs.com/news_topic/20190215191558357-305490008.png","ViewCount":11,"CommentCount":0,"DiggCount":0,"DateAdded":"2026-01-22T13:36:00"},{"Id":813390,"Title":"黑中介10天换35个马甲发虚假高薪岗,BOSS直聘:账号已被冻结","Summary":"界面新闻记者 | 宋佳楠 界面新闻获悉,BOSS 直聘日前针对黑中介发布的虚假高薪招聘进行了专项治理。该行动重点覆盖操作工/普工、安检员、服务员、送餐员等主流蓝领岗位,目前平台日均拦截发布异常高薪岗位的招聘者超 300 人。2025 年第四季度,平台共处置 7000 多个虚标职位。 公告显示,一个黑","TopicId":706,"TopicIcon":"https://images2017.cnblogs.com/news_topic/20170803083046537-409488424.png","ViewCount":32,"CommentCount":0,"DiggCount":0,"DateAdded":"2026-01-22T13:30:00"},{"Id":813389,"Title":"中国团队首次Nature子刊发布医疗AI标准,未来医生MedGPT全球夺冠","Summary":"衡宇发自凹非寺 量子位 | 公众号 QbitAI 中国团队首次在全球顶尖期刊发表“大模型+医疗”领域的相关标准研究! 作为 Nature 体系中专注于数字医疗的旗舰期刊,《npj Digital Medicine》(JCR 影响因子 15.1,中科院医学大类 1 区 Top 期刊)此次收录的 CSE","TopicId":319,"TopicIcon":"https://img2022.cnblogs.com/news_topic/20220811222259068-732048061.jpg","ViewCount":39,"CommentCount":0,"DiggCount":1,"DateAdded":"2026-01-22T13:23:00"},{"Id":813388,"Title":"马斯克罕见低头:开源推荐算法,自嘲“很烂”不过未来月更","Summary":"就现在,GitHub 已经能完整看到马斯克开源的推荐算法系统了。 开源文件里明确表示,这是一个几乎完全由 AI 模型驱动的算法系统。我们移除了所有人工设计特征和绝大多数启发式规则。 消息一出,整个社区立刻沸腾了,最高赞上去就是一顿猛夸:incredible!没有其他平台能做到如此透明。 马斯克本人也","TopicId":570,"TopicIcon":"https://images0.cnblogs.com/news_topic/20150702090016187.png","ViewCount":69,"CommentCount":0,"DiggCount":0,"DateAdded":"2026-01-22T13:15:00"},{"Id":813387,"Title":"微软打包收购OpenAI?就差一点!","Summary":"克雷西鹭羽发自凹非寺 量子位 | 公众号 QbitAI 太抓马了!奥特曼的宫斗大戏,竟然还有内幕? 就在奥特曼被董事会罢免的那个周末,微软差点来了一波雇佣式收购。 短短一天,资金、法律文书就全部到位,连名字都想好了…… 但比起其他雇佣式收购,微软的这波操作更像是项庄舞剑,当中的沛公,则是 OpenA","TopicId":2,"TopicIcon":"https://img2023.cnblogs.com/news_topic/20230719081359678-892461041.png","ViewCount":69,"CommentCount":0,"DiggCount":0,"DateAdded":"2026-01-22T13:08:00"},{"Id":813386,"Title":"DeepSeek-R2要来了?","Summary":"新智元报道 编辑:Aeneas KingHZ DeepSeek-R1 发布一周年之际,核心算法库惊现 MODEL1,是 V4 还是 R2? 2025 年 1 月 20 日,DeepSeek-R1 正式发布。从此,国产大模型第一次走到了全球舞台的核心位置,开启了开源时代。 而就在今天深夜,开发者社区沸","TopicId":3295,"TopicIcon":"https://img2023.cnblogs.com/news_topic/20231206154557865-604585116.png","ViewCount":119,"CommentCount":0,"DiggCount":0,"DateAdded":"2026-01-22T13:00:00"},{"Id":813385,"Title":"Node.js之父官宣:人类手写代码时代真的结束了!","Summary":"新智元报道 编辑:定慧 Node.js 之父 Ryan Dahl 今天发推宣布:人类手写代码的时代已经终结!与此同时,Stability AI 创始人 Emad Mostaque 预测:现在每月 200 美元的顶级 AI 编程体验,两年后将跌至不到 1 美元。 Node.js 之父 Ryan Dah","TopicId":342,"TopicIcon":"https://images2015.cnblogs.com/news_topic/20150909121037903-928866795.png","ViewCount":86,"CommentCount":0,"DiggCount":1,"DateAdded":"2026-01-22T12:50:00"}]
iPhone 18 Pro 仍采用居中缩小版灵动岛、苹果 AI Pin 最快明年亮相
近日,关于 iPhone 18 Pro 前置方案的讨论出现反转,多家媒体援引博主 @刹那数码爆料称,iPhone 18 Pro 仍采用居中缩小版灵动岛。 刹那数码表示,所谓「左侧挖孔前置摄像头」的说法是一次「彻头彻尾的误传」。 他在微博中指出,最初是一家英文媒体在社交平台上出现翻译或理解偏差,将「左
[#813396][posted@ [5小时前]][浏览:16][评论:0][点赞:0]
又怎么了?沐瞳多款游戏美服或暂时下架、或计划迁移服务器
GameLook 报道/去年 1 月,因为美国闹的沸沸扬扬的 TikTok“不卖就禁用”法案引发风波,字节跳动旗下《MLBB》《Watcher of Reamls》《Marvel Snap》等多款游戏美国服务器停止运营。当月月底,随着 TikTok 恢复对美国用户的服务,多款游戏也恢复在美运营,重新
[#813395][posted@ [5小时前]][浏览:11][评论:0][点赞:0]
......
>$ cargo run --bin cnb -- news list --page-index 2 --page-size 12
Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.06s
Running `target/debug/cnb news list --page-index 2 --page-size 12`
res: [{"Id":813396,"Title":"iPhone 18 Pro 仍采用居中缩小版灵动岛、苹果 AI Pin 最快明年亮相","Summary":"近日,关于 iPhone 18 Pro 前置方案的讨论出现反转,多家媒体援引博主 @刹那数码爆料称,iPhone 18 Pro 仍采用居中缩小版灵动岛。 刹那数码表示,所谓「左侧挖孔前置摄像头」的说法是一次「彻头彻尾的误传」。 他在微博中指出,最初是一家英文媒体在社交平台上出现翻译或理解偏差,将「左","TopicId":4507,"TopicIcon":"https://img2024.cnblogs.com/news_topic/20250920120315354-1705513294.jpg","ViewCount":16,"CommentCount":0,"DiggCount":0,"DateAdded":"2026-01-22T14:18:00+08:00"},{"Id":813395,"Title":"又怎么了?沐瞳多款游戏美服或暂时下架、或计划迁移服务器","Summary":"GameLook 报道/去年 1 月,因为美国闹的沸沸扬扬的 TikTok“不卖就禁用”法案引发风波,字节跳动旗下《MLBB》《Watcher of Reamls》《Marvel Snap》等多款游戏美国服务器停止运营。当月月底,随着 TikTok 恢复对美国用户的服务,多款游戏也恢复在美运营,重新","TopicId":3037,"TopicIcon":"https://img2023.cnblogs.com/news_topic/20230425141319204-576309608.png","ViewCount":11,"CommentCount":0,"DiggCount":0,"DateAdded":"2026-01-22T14:10:00+08:00"},{"Id":813394,"Title":"月球上的射电望远镜","Summary":"如果一切顺利,2027 年初 SpaceX 将把 LuSEE-Night 发射到月球背面。LuSEE-Night 代表 Lunar Surface Electromagnetics Experiment–Night,它将利用 Firefly Aerospace 的着陆器 Blue Ghost M","TopicId":319,"TopicIcon":"https://img2022.cnblogs.com/news_topic/20220811222259068-732048061.jpg","ViewCount":10,"CommentCount":0,"DiggCount":0,"DateAdded":"2026-01-22T13:55:00+08:00"},{"Id":813393,"Title":"大多数 CEO 报告 AI 投资零回报","Summary":"普华永道(PwC)调查了逾 4500 位 CEO ,发现尽管在 AI 上投入了大量资金,但大部分 CEO 表示 AI 投资未带来收入增长或成本降低。接受调查的 4454 位商界领袖中只有 12% 同时实现了成本降低和收入增长,56% 既没有降低成本也没有增加收入,26% 实现了成本降低,但类似比例的","TopicId":1268,"TopicIcon":"https://img2022.cnblogs.com/news_topic/20220606141755761-1777331107.png","ViewCount":23,"CommentCount":0,"DiggCount":0,"DateAdded":"2026-01-22T13:47:00+08:00"},{"Id":813392,"Title":"cURL 因 AI Slop 将关闭 Bug 悬赏项目","Summary":"为减少 AI Slop 报告数量,cURL 项目将在一月底终止 Bug 悬赏项目。cURL 维护者 Daniel Stenberg 表示,“为避免被拖下去我们必须努力阻止这股洪流。”cURL 是一个广泛使用的互联网基础工具,几乎被每一个联网的设备和系统使用。今年早些时候,cURL 项目披露收到了大量","TopicId":2989,"TopicIcon":"https://img2023.cnblogs.com/news_topic/20230327132140272-557361565.png","ViewCount":18,"CommentCount":0,"DiggCount":0,"DateAdded":"2026-01-22T13:42:00+08:00"},{"Id":813391,"Title":"Palantir CEO 称 AI 让大规模移民过时","Summary":"Palantir CEO Alex Karp 在达沃斯世界经济论坛的一个讨论会上表示,AI 将取代大量工作,让大规模移民变得过时。他认为白领和蓝领的地位将出现翻转,“你们国家的公民将拥有充足的就业机会,尤其是接受过职业技能培训的人。我认为目前的趋势确实让人很难想象,除非具备非常专业的技能,否则为什么","TopicId":664,"TopicIcon":"https://img2018.cnblogs.com/news_topic/20190215191558357-305490008.png","ViewCount":11,"CommentCount":0,"DiggCount":0,"DateAdded":"2026-01-22T13:36:00+08:00"},{"Id":813390,"Title":"黑中介10天换35个马甲发虚假高薪岗,BOSS直聘:账号已被冻结","Summary":"界面新闻记者 | 宋佳楠 界面新闻获悉,BOSS 直聘日前针对黑中介发布的虚假高薪招聘进行了专项治理。该行动重点覆盖操作工/普工、安检员、服务员、送餐员等主流蓝领岗位,目前平台日均拦截发布异常高薪岗位的招聘者超 300 人。2025 年第四季度,平台共处置 7000 多个虚标职位。 公告显示,一个黑","TopicId":706,"TopicIcon":"https://images2017.cnblogs.com/news_topic/20170803083046537-409488424.png","ViewCount":32,"CommentCount":0,"DiggCount":0,"DateAdded":"2026-01-22T13:30:00+08:00"},{"Id":813389,"Title":"中国团队首次Nature子刊发布医疗AI标准,未来医生MedGPT全球夺冠","Summary":"衡宇发自凹非寺 量子位 | 公众号 QbitAI 中国团队首次在全球顶尖期刊发表“大模型+医疗”领域的相关标准研究! 作为 Nature 体系中专注于数字医疗的旗舰期刊,《npj Digital Medicine》(JCR 影响因子 15.1,中科院医学大类 1 区 Top 期刊)此次收录的 CSE","TopicId":319,"TopicIcon":"https://img2022.cnblogs.com/news_topic/20220811222259068-732048061.jpg","ViewCount":39,"CommentCount":0,"DiggCount":1,"DateAdded":"2026-01-22T13:23:00+08:00"},{"Id":813388,"Title":"马斯克罕见低头:开源推荐算法,自嘲“很烂”不过未来月更","Summary":"就现在,GitHub 已经能完整看到马斯克开源的推荐算法系统了。 开源文件里明确表示,这是一个几乎完全由 AI 模型驱动的算法系统。我们移除了所有人工设计特征和绝大多数启发式规则。 消息一出,整个社区立刻沸腾了,最高赞上去就是一顿猛夸:incredible!没有其他平台能做到如此透明。 马斯克本人也","TopicId":570,"TopicIcon":"https://images0.cnblogs.com/news_topic/20150702090016187.png","ViewCount":69,"CommentCount":0,"DiggCount":0,"DateAdded":"2026-01-22T13:15:00+08:00"},{"Id":813387,"Title":"微软打包收购OpenAI?就差一点!","Summary":"克雷西鹭羽发自凹非寺 量子位 | 公众号 QbitAI 太抓马了!奥特曼的宫斗大戏,竟然还有内幕? 就在奥特曼被董事会罢免的那个周末,微软差点来了一波雇佣式收购。 短短一天,资金、法律文书就全部到位,连名字都想好了…… 但比起其他雇佣式收购,微软的这波操作更像是项庄舞剑,当中的沛公,则是 OpenA","TopicId":2,"TopicIcon":"https://img2023.cnblogs.com/news_topic/20230719081359678-892461041.png","ViewCount":69,"CommentCount":0,"DiggCount":0,"DateAdded":"2026-01-22T13:08:00+08:00"},{"Id":813386,"Title":"DeepSeek-R2要来了?","Summary":"新智元报道 编辑:Aeneas KingHZ DeepSeek-R1 发布一周年之际,核心算法库惊现 MODEL1,是 V4 还是 R2? 2025 年 1 月 20 日,DeepSeek-R1 正式发布。从此,国产大模型第一次走到了全球舞台的核心位置,开启了开源时代。 而就在今天深夜,开发者社区沸","TopicId":3295,"TopicIcon":"https://img2023.cnblogs.com/news_topic/20231206154557865-604585116.png","ViewCount":119,"CommentCount":0,"DiggCount":0,"DateAdded":"2026-01-22T13:00:00+08:00"},{"Id":813385,"Title":"Node.js之父官宣:人类手写代码时代真的结束了!","Summary":"新智元报道 编辑:定慧 Node.js 之父 Ryan Dahl 今天发推宣布:人类手写代码的时代已经终结!与此同时,Stability AI 创始人 Emad Mostaque 预测:现在每月 200 美元的顶级 AI 编程体验,两年后将跌至不到 1 美元。 Node.js 之父 Ryan Dah","TopicId":342,"TopicIcon":"https://images2015.cnblogs.com/news_topic/20150909121037903-928866795.png","ViewCount":86,"CommentCount":0,"DiggCount":1,"DateAdded":"2026-01-22T12:50:00+08:00"}]
Error: trailing input at line 1 column 690
排查struct
两个都读取到了完整的json串,那么是在反序列化环节出问题了。检查定义的结构体:
use chrono::NaiveDateTime;
use owo_colors::OwoColorize;
use serde::Deserialize;
use crate::tools::timer::DateFormatExt;
#[derive(Debug, Deserialize, Default)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
pub struct NewsInfo {
pub id: u64,
pub title: String,
pub summary: String,
pub topic_id: u64,
pub topic_icon: String,
pub view_count: u64,
pub comment_count: u64,
pub digg_count: u64,
pub date_added: NaiveDateTime,
}
看着也没问题。
逐步排查
排除了之前怀疑的一步问题,完整的字符串,解析的结构体也是合理的,现在换一个方式。先把JSON解析成serde::Value然后在逐个解析,看解析结果。
pub async fn list_news(c: &Client, page: impl Serialize + Send + Sync) -> Result<Vec<NewsInfo>> {
let res = raw_list_news(c, page).await?.text().await?;
println!("res: {}", res);
let values: Vec<serde_json::Value> = serde_json::from_str(&res)?;
for (i, item) in values.iter().enumerate(){
if let Err(e) = serde_json::from_value::<NewsInfo>(item.clone()) {
eprintln!("❌ failed at index {i}: {e}");
eprintln!("{}", item);
break;
}
}
Ok(serde_json::from_str(&res)?)
// raw_list_news(c, page)
// .await?
// .json()
// .await
// .into_anyhow_result()
}
第二次调用报错信息:
❌ failed at index 0: trailing input
{"CommentCount":0,"DateAdded":"2026-01-22T14:18:00+08:00","DiggCount":0,"Id":813396,"Summary":"近日,关于 iPhone 18 Pro 前置方案的讨论出现反转,多家媒体援引博主 @刹那数码爆料称,iPhone 18 Pro 仍采用居中缩小版灵动岛。 刹那数码表示,所谓「左侧挖孔前置摄像头」的说法是一次「彻头彻尾的误传」。 他在微博中指出,最初是一家英文媒体在社交平台上出现翻译或理解偏差,将「左","Title":"iPhone 18 Pro 仍采用居中缩小版灵动岛、苹果 AI Pin 最快明年亮相","TopicIcon":"https://img2024.cnblogs.com/news_topic/20250920120315354-1705513294.jpg","TopicId":4507,"ViewCount":18}
问题在解析这条数据是出问题了。格式化之后,结构体字段对比。发现问题在DateAdded字段,"DateAdded":"2026-01-22T14:18:00+08:00"我们代码里接受的是NaiveDateTime不带时区,这里怎么带时区了,那之前的一次为什么解析成功了?事出反常必有妖,在第一调用返回的结果中找到这条数据的该字段:
{"Id":813396,"Title":"iPhone 18 Pro 仍采用居中缩小版灵动岛、苹果 AI Pin 最快明年亮相","Summary":"近日,关于 iPhone 18 Pro 前置方案的讨论出现反转,多家媒体援引博主 @刹那数码爆料称,iPhone 18 Pro 仍采用居中缩小版灵动岛。 刹那数码表示,所谓「左侧挖孔前置摄像头」的说法是一次「彻头彻尾的误传」。 他在微博中指出,最初是一家英文媒体在社交平台上出现翻译或理解偏差,将「左","TopicId":4507,"TopicIcon":"https://img2024.cnblogs.com/news_topic/20250920120315354-1705513294.jpg","ViewCount":18,"CommentCount":0,"DiggCount":0,"DateAdded":"2026-01-22T14:18:00"}
"DateAdded":"2026-01-22T14:18:00",🤬🤬🤬🤬🤬🤬🤬🤬,到这里能说明玄学了,两次返回的结果中时间格式不一致,先改成String类型接收,看看结果。
❌ failed at index 6: invalid type: null, expected a string
{"CommentCount":0,"DateAdded":"2026-01-22T15:13:00","DiggCount":0,"Id":813402,"Summary":"据鞭牛士报道,鑫源汽车近日在成立 20 周年之际发布全新品牌 logo「大象标」,采用橙色主色调,被网友指出视觉风格与小米 logo 高度相似。相关话题在社交平台发酵。 鑫源汽车官方发布文章《大象无形,行则有道》对新 logo 作了详细解读:新 logo 采用橙色背景与白色简笔线条勾勒大象轮廓:大象","Title":"鑫源汽车发布新 logo「大象标」被指撞脸小米","TopicIcon":null,"TopicId":0,"ViewCount":31}
Error: invalid type: null, expected a string at line 1 column 4641
这次是null找到字段"TopicIcon":null。修改结构体:
#[derive(Debug, Deserialize, Default)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
pub struct NewsInfo {
pub id: u64,
pub title: String,
pub summary: String,
pub topic_id: u64,
pub topic_icon: Option<String>,
pub view_count: u64,
pub comment_count: u64,
pub digg_count: u64,
pub date_added: String,
}
这里有个误区,就是#[serde(default)]就是字段缺失时才会用默认,null对应的是Option::None
到这里,这个“玄学”问题解决了。
作者: 咕咚!
出处: https://www.cnblogs.com/linga/
关于作者:专注虚拟化,运维开发,RPA,Rust,Go,Python!
本文版权归作者和博客园共有,禁止*.csdn.net转载,禁止以盈利为目的的转载,转载文章,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 原文链接 如有问题, 可邮件(oldsixa@163.com)咨询.

浙公网安备 33010602011771号