You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#中将Firebase键值对列表转换为Person类对象列表

问题描述

我从Firebase获取用户列表,但返回的是键值对(KVP)数据:

{[FirstName, Eric]}
{[LastNae, EricLastName]}
{[Email, Eric@yahoo.com]}
{[Phone, 12345]}

需要将该键值对列表转换为Person类类型的对象列表,Person类定义如下:

Person
{
    string FirstName {get; set;}
    string LastName {get; set;}
    string Email {get; set;}
    string Phone {get; set;}
}

请问最快且最高效的转换方式是什么?

高效转换方案

1. 手动映射(性能最优)

这是最快的实现方式,完全避免反射或序列化的额外开销,适合对性能要求极高的场景:

// 假设从Firebase获取的键值对集合为List<Dictionary<string, object>>
var firebaseKvpList = GetFirebaseUserKvpData();
var personList = new List<Person>();

foreach (var kvpSet in firebaseKvpList)
{
    var person = new Person();
    // 逐个匹配键值对赋值,处理示例中存在的键名拼写问题(LastNae)
    if (kvpSet.TryGetValue("FirstName", out var firstNameVal))
        person.FirstName = firstNameVal.ToString();
    if (kvpSet.TryGetValue("LastNae", out var lastNameVal))
        person.LastName = lastNameVal.ToString();
    if (kvpSet.TryGetValue("Email", out var emailVal))
        person.Email = emailVal.ToString();
    if (kvpSet.TryGetValue("Phone", out var phoneVal))
        person.Phone = phoneVal.ToString();
    
    personList.Add(person);
}

2. 序列化库转换(兼顾性能与简洁性)

如果字段较多不想写重复赋值代码,用System.Text.Json或Newtonsoft.Json序列化是不错的选择,性能接近手动映射,代码更简洁:

using System.Text.Json;

var personList = new List<Person>();
foreach (var kvpSet in firebaseKvpList)
{
    // 将键值对集合序列化为JSON字符串
    var jsonStr = JsonSerializer.Serialize(kvpSet);
    // 反序列化为Person对象
    var person = JsonSerializer.Deserialize<Person>(jsonStr);
    personList.Add(person);
}

如果键名和类属性名不匹配(比如示例中的LastNae vs LastName),可以在Person类上加特性适配:

public class Person
{
    public string FirstName { get; set; }
    [JsonPropertyName("LastNae")]
    public string LastName { get; set; }
    public string Email { get; set; }
    public string Phone { get; set; }
}

3. 不推荐:反射转换

反射会带来明显的性能损耗,仅适合极端动态的场景,不建议作为常规方案使用。

内容的提问来源于stack exchange,提问作者CodeMan03

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 04:56:10