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

如何遍历Firebase JSON并提取email、name、points字段值?

解决Firebase自动生成键的JSON数据读取问题

看起来你已经找到解决方案了,我把这个问题的逻辑梳理清楚,方便其他遇到同样困扰的开发者参考:

你的核心痛点是Firebase返回的JSON顶层是自动生成的随机字符串键,每个键对应包含email、name、points的用户对象,普通反序列化方式没法直接适配这种键值对结构。

先明确你的Firebase数据结构

{ 
  "23ds1f5":{ 
    "email":"email@example.com", 
    "name":"my name", 
    "points":0 
  }, 
  "dsfv57s":{ 
    "email":"email2@example.com", 
    "name":"this name", 
    "points":0 
  }, 
  "r6s7gv98268":{ 
    "email":"lol@example2.com", 
    "name":"nameHere", 
    "points":0 
  } 
}

为什么之前的尝试没成功?

  • 直接反序列化到Data对象:Data类无法匹配顶层的随机键结构,JSON.NET不知道如何把这些键映射到对象属性。
  • 用Dictionary<string, string>:每个值不是字符串,而是复杂的用户对象,反序列化会直接报错。
  • 用JObject遍历:能拿到键和对应的子JSON对象,但需要额外解析子对象才能提取字段,操作不够直接。

正确解决方案:用Dictionary<string, Data>反序列化

你的JSON本质是字符串键到用户对象的映射,Dictionary<string, Data>正好完美匹配这个结构:

第一步:确保Data类定义正确

// 属性名和JSON字段名直接匹配,无需额外配置
public class Data
{
    public string email { get; set; }
    public string name { get; set; }
    public int points { get; set; }
}

// 如果习惯用C#大驼峰命名,可通过JsonProperty特性做字段映射
// public class Data
// {
//     [JsonProperty("email")]
//     public string Email { get; set; }
//     [JsonProperty("name")]
//     public string Name { get; set; }
//     [JsonProperty("points")]
//     public int Points { get; set; }
// }

第二步:反序列化并遍历数据

// 假设json是从Firebase获取到的响应体字符串
Dictionary<string, Data> userList = JsonConvert.DeserializeObject<Dictionary<string, Data>>(json);

foreach (KeyValuePair<string, Data> entry in userList)
{
    // entry.Key是Firebase自动生成的随机用户ID
    Console.WriteLine($"用户ID: {entry.Key}");
    // entry.Value是对应的用户对象,直接访问属性即可获取数据
    Console.WriteLine($"邮箱: {entry.Value.email}");
    Console.WriteLine($"姓名: {entry.Value.name}");
    Console.WriteLine($"积分: {entry.Value.points}");
}

原理说明

Json.NET会自动识别JSON的键值对结构:把每个顶层随机字符串作为字典的Key,把对应的子JSON对象反序列化为Data类型实例作为字典的Value,遍历字典就能轻松拿到所有用户的完整信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 09:02:44