import Foundation public struct VersionInfo: Sendable, Equatable { public let version: String /// 命令类型标识,设备可能返回 Int (如 7) 或 String (如 "0x07") public let type: String } extension VersionInfo: Codable { enum CodingKeys: String, CodingKey { case version, type } public init(from decoder: Decoder) throws { let container = try decoder.container(keyedBy: CodingKeys.self) version = try container.decode(String.self, forKey: .version) // type may come as Int or String from different firmware versions if let str = try? container.decode(String.self, forKey: .type) { type = str } else if let num = try? container.decode(Int.self, forKey: .type) { type = "\(num)" } else { type = "" } } }