【发布时间】:2020-10-22 23:28:48
【问题描述】:
我正在尝试通过引用列表中的属性来更改列表中属性的名称。
下面是包含 B 列表的外部类 A 的代码。如果您注意到,在“A”上有 [DataMember, ItemName("C")]。总之,我想用这个“ItemName”属性将B中的“Data”属性重命名为“C”
代码:
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Runtime.Serialization;
namespace ConsoleApp1
{
public class B
{
[DataMember]
public int Data { get; set; }
}
public class A
{
[DataMember, ItemName("C")]
public List<B> List { get; set; }
}
public class ItemNameAttribute : Attribute
{
public string Name { get; }
public ItemNameAttribute(string name)
{
Name = name;
}
}
class Program
{
static void Main(string[] args)
{
var a = new A();
a.List = new List<B>()
{
new B() { Data = 1 }, new B() { Data = 2 }
};
var json = JsonConvert.SerializeObject(a);
}
}
}
我想要的预期 Json 输出是
{
"List": [
{
"C": 1
},
{
"C": 2
}
]
}
我目前的输出是:
{
"List": [
{
"Data": 1
},
{
"Data": 2
}
]
}
【问题讨论】:
标签: c# serialization json.net