C# C处理字典,其中值可以是(也可以不是)数组
我正在创建一个库,将JSON对象解码为c对象,然后用户可以访问、修改和重新发送。有些对象是预先确定的,而另一些对象最终将是非预先确定的,尽管它们有几种可能的标准格式。因此,我们发现用它管理这些值的最佳方法是创建一个包含字典的对象C# C处理字典,其中值可以是(也可以不是)数组,c#,arrays,object,dictionary,collections,C#,Arrays,Object,Dictionary,Collections,我正在创建一个库,将JSON对象解码为c对象,然后用户可以访问、修改和重新发送。有些对象是预先确定的,而另一些对象最终将是非预先确定的,尽管它们有几种可能的标准格式。因此,我们发现用它管理这些值的最佳方法是创建一个包含字典的对象 Dictionary<string, Field> _fields = new Dictionary<string,Field>; 然后我们的所有对象都可以是字段,我们为已建立的对象创建属性,并使用索引器/方法来获取任何字段,包括非预定的字段
Dictionary<string, Field> _fields = new Dictionary<string,Field>;
然后我们的所有对象都可以是字段,我们为已建立的对象创建属性,并使用索引器/方法来获取任何字段,包括非预定的字段
public OurObject : Field
public T GetFieldByName<T>(string fieldName) where T : class
{
return _fields.ContainsKey(fieldName) ? _fields[fieldName] as T: null;
}
public Field this[string index]
{
get { return _fields.GetFieldByName<Field>(index); }
set { _fields.SetFieldByName(index, value); }
}
好的,很酷。但后来我意识到其中一些对象实际上是数组。该死好的,回到绘图板上。但是我们在找到处理这些数组/非数组的通用访问/管理的好方法时遇到了一些困难
到目前为止,我们提出的想法包括:
创建从字段扩展的集合对象并将其放置在FieldCollection中,扩展从该字段扩展为数组的任何字段对象。
将字典中的字段更改为字段[],或者将属性添加到字段IsArray,或者与上一点结合使用
有没有更好的方法来保持散列,使单个对象或对象数组保持相同的方式?这将是一个库,所以我们希望它对用户来说尽可能简单易用 首先,检查一下。它将为您处理序列化/反序列化基本类型和字典等。它还将处理自定义数据类型
例如,从文档中
你期望的类型
public class Account
{
public string Email { get; set; }
public bool Active { get; set; }
public DateTime CreatedDate { get; set; }
public IList<string> Roles { get; set; }
}
如您所料,反序列化并访问字典
Account account = JsonConvert.DeserializeObject<Account>(json);
Console.WriteLine(account.Email);
有没有理由不使用现有的JSON反序列化程序?
Account account = JsonConvert.DeserializeObject<Account>(json);
Console.WriteLine(account.Email);