From f394ae68e7eeebe311e3bbc6d10bb04cdd609af6 Mon Sep 17 00:00:00 2001 From: lanyeeee Date: Fri, 7 Aug 2026 04:19:54 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20PlayerInfo=20?= =?UTF-8?q?=E6=BD=9C=E5=9C=A8=E7=9A=84JSON=E8=A7=A3=E6=9E=90=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src-tauri/src/types.rs | 11 +++++++++++ src-tauri/src/types/player_info.rs | 3 +++ 2 files changed, 14 insertions(+) diff --git a/src-tauri/src/types.rs b/src-tauri/src/types.rs index 2292b83..2203b60 100644 --- a/src-tauri/src/types.rs +++ b/src-tauri/src/types.rs @@ -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 +where + T: Default + Deserialize<'de>, + D: Deserializer<'de>, +{ + let opt = Option::deserialize(deserializer)?; + Ok(opt.unwrap_or_default()) +} diff --git a/src-tauri/src/types/player_info.rs b/src-tauri/src/types/player_info.rs index 40e0902..31325d5 100644 --- a/src-tauri/src/types/player_info.rs +++ b/src-tauri/src/types/player_info.rs @@ -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, pub preview_toast: String, pub options: Options,