Files
EmailBill/.temp_verify_fix.cs

61 lines
2.1 KiB
C#
Raw Permalink Normal View History

using System;
using System.Text.Json;
using System.Linq;
using System.Collections.Generic;
// 模拟修复后的响应类型
public record IconifyApiResponse
{
[System.Text.Json.Serialization.JsonPropertyName("icons")]
public List<string>? Icons { get; init; }
}
public class IconCandidate
{
public string CollectionName { get; set; } = string.Empty;
public string IconName { get; set; } = string.Empty;
public string IconIdentifier => $"{CollectionName}:{IconName}";
}
class Program
{
static void Main()
{
// 从 Iconify API 获取的实际响应
var jsonResponse = @"{""icons"":[""svg-spinners:wind-toy"",""material-symbols:smart-toy"",""mdi:toy-brick"",""tabler:horse-toy"",""game-icons:toy-mallet""]}";
Console.WriteLine("=== 图标搜索功能验证 ===\n");
Console.WriteLine($"1. Iconify API 响应格式: {jsonResponse.Substring(0, 100)}...\n");
// 反序列化
var apiResponse = JsonSerializer.Deserialize<IconifyApiResponse>(jsonResponse);
Console.WriteLine($"2. 反序列化成功,图标数量: {apiResponse?.Icons?.Count ?? 0}\n");
// 解析为 IconCandidate
var candidates = apiResponse?.Icons?
.Select(iconStr =>
{
var parts = iconStr.Split(':', 2);
if (parts.Length != 2) return null;
return new IconCandidate
{
CollectionName = parts[0],
IconName = parts[1]
};
})
.Where(c => c != null)
.Cast<IconCandidate>()
.ToList() ?? new List<IconCandidate>();
Console.WriteLine($"3. 解析为 IconCandidate 列表,数量: {candidates.Count}\n");
Console.WriteLine("4. 图标列表:");
foreach (var icon in candidates)
{
Console.WriteLine($" - {icon.IconIdentifier} (Collection: {icon.CollectionName}, Name: {icon.IconName})");
}
Console.WriteLine("\n✅ 验证成功!图标搜索功能已修复。");
}
}