fix: 修复 PlayerInfo 潜在的JSON解析错误问题

This commit is contained in:
lanyeeee
2026-08-07 04:20:57 +08:00
parent 1766262d6e
commit f394ae68e7
2 changed files with 14 additions and 0 deletions
+11
View File
@@ -1,3 +1,5 @@
use serde::{Deserialize, Deserializer};
pub mod audio_quality;
pub mod available_media_formats;
pub mod bangumi_follow_info;
@@ -36,3 +38,12 @@ pub mod user_info;
pub mod user_video_info;
pub mod video_quality;
pub mod watch_later_info;
fn deserialize_null_default<'de, D, T>(deserializer: D) -> Result<T, D::Error>
where
T: Default + Deserialize<'de>,
D: Deserializer<'de>,
{
let opt = Option::deserialize(deserializer)?;
Ok(opt.unwrap_or_default())
}
+3
View File
@@ -1,6 +1,8 @@
use serde::{Deserialize, Serialize};
use specta::Type;
use super::deserialize_null_default;
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize, Type)]
#[serde(default)]
#[allow(clippy::struct_excessive_bools)]
@@ -30,6 +32,7 @@ pub struct PlayerInfo {
pub online_count: i64,
pub need_login_subtitle: bool,
pub subtitle: SubtitleInPlayerInfo,
#[serde(default, deserialize_with = "deserialize_null_default")]
pub view_points: Vec<ViewPoint>,
pub preview_toast: String,
pub options: Options,