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

使用JavaScriptSerializer反序列化带唯一键的JSON对象集合遇阻求助

解决方案

你的JSON外层是键值对形式的对象(每个唯一键对应一个用户信息对象),并非数组结构,所以直接反序列化为List<string>必然失效。以下是两种可行的解决方法:

方法一:反序列化为字典

将JSON反序列化为Dictionary<string, User>类型,其中User是匹配内部结构的实体类:

  • 定义实体类:
public class User
{
    public string Adress { get; set; }
    public string ID { get; set; }
    public string Namn { get; set; }
    public string TelefonNummer { get; set; }
}
  • 执行反序列化:
var serializer = new JavaScriptSerializer();
var userDictionary = serializer.Deserialize<Dictionary<string, User>>(s);

之后你可以通过唯一键访问单个用户,或遍历字典获取所有用户:

// 遍历所有用户数据
foreach (var entry in userDictionary)
{
    string uniqueKey = entry.Key;
    User userInfo = entry.Value;
    // 访问userInfo.Adress、userInfo.ID等属性
}

方法二:提取用户对象转为列表

如果不需要保留外层的唯一键,仅需用户信息集合,可在反序列化为字典后提取所有值:

var userList = userDictionary.Values.ToList();

原方法失效原因

你的JSON用{}包裹,属于对象结构;而List<string>对应JSON中[]包裹的数组结构,类型不匹配导致反序列化失败。必须保证.NET类型与JSON结构一一对应。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 01:20:22