如何根据C#中的模型数动态构造JSON密钥名?
例如:如何根据C#中的模型数动态构造JSON密钥名?,c#,json,collections,C#,Json,Collections,例如: { "Books": [ { "Name-1":"The Alchemist", "Type-1":"Fiction" }, { "Name-2":"Silent Spring", "Type-2"
{
"Books": [
{
"Name-1":"The Alchemist",
"Type-1":"Fiction"
},
{
"Name-2":"Silent Spring",
"Type-2":"Non-Fiction"
},
{
"Name-3":"1984",
"Type-3":"Fiction"
}
]
}
我用属性“Name”和“Type”定义了Books模型。如何从Books collection创建上述JSON?将书籍映射到Dictionary并序列化它们。
比如:
serializer.Serialize(new{Books=Books.Select((x,i)=>
新字典{
{$“{nameof(x.Name}-{i+1}”,x.Name},
{$“{nameof(x.Type}-{i+1}”,x.Type}
}});
然而,拥有这样一个Json看起来非常奇怪(我的意思是将索引作为同一数组中对象的属性名)
您需要通过JsonTextWriter生成json
StringBuilder sb = new StringBuilder();
StringWriter sw = new StringWriter(sb);
using (JsonWriter writer = new JsonTextWriter(sw))
{
writer.WriteStartObject();
writer.WritePropertyName("Books");
writer.WriteStartArray();
//your for
writer.WriteEndArray();
writer.WriteEndObject();
}
我可以问一下您为什么要这样做吗?在我们已经拥有的用于处理JSON的库中,这样做不容易的原因是这个要求非常奇怪,如果没有动态映射来处理这个问题,使用这个JSON的应用程序很难正确地获得映射。我理解这个问题。但是API将在今年被使用方式