我正在编写一个不公开任何公共属性的类(AttributeBag)。在里面,我有一个通过 Get 和 Set 方法管理的对象(属性)列表。我希望能够在 AttributeBag 类上运行 JsonSerializer.Serialize() 并检索如下 JSON 结构:
[
{
"Name": "x",
"Value": "y"
},
{
"Name": "x1",
"Value": "y1"
},
{
"Name": "x2",
"Value": "y2"
}
]
我的 Attribute 和 AttributeBag 类如下所示:
public class Attribute
{
public string Name { get; set; }
public object Value { get; set; }
}
public class AttributeBag
{
private readonly List<Attribute> attributes;
public AttributeBag()
{
this.attributes = new List<Attribute>();
}
public AttributeBag Set(string name, object value)
{
var searchAttribute = this.attributes.Find(x => x.Name.Equals(name));
if (searchAttribute != null)
{
searchAttribute.Value = value;
}
else
{
this.attributes.Add(new Attribute { Name = name, Value = value });
}
return this;
}
public Attribute Get(string name)
{
var searchAttribute = this.attributes.Find(x => x.Name.Equals(name));
if (searchAttribute != null)
{
return searchAttribute;
}
else
{
throw new AttributeNameNotFoundException(name);
}
}
public object GetValue(string name)
{
var searchAttribute = this.attributes.Find(x => x.Name.Equals(name));
if (searchAttribute != null)
{
return searchAttribute.Value;
}
else
{
throw new AttributeNameNotFoundException(name);
}
}
}
我希望能够做这样简单的事情:
var ab = new AttributeBag();
ab.Set("x", "y");
ab.Set("x1", "y1");
ab.Set("x2", "y2");
string jsonData = JsonSerializer.Serialize(ab);
我尝试查看文档,但不确定如何继续进行上述操作。我应该为此使用 Utf8JsonWriter 吗?看来,如果我使用 Utf8JsonWriter,我将需要一个实现 JSON 写入的函数,并使用 ab.Serialize() 调用它,并且不需要直接使用 JsonSerializer。这是要走的路还是有办法使用JsonSerializer.Serialize?
任何指针将不胜感激!