在属性名称前面加上一些字符-JSON序列化
本文关键字:字符 -JSON 序列化 属性 前面 | 更新日期: 2023-09-27 18:21:28
如果我有一个类似的类
class A
{
public int Age {get; set;}
public string Name {get; set;}
}
有没有一种方法可以序列化这个对象以生成具有一些任意字符的属性,比如这个
[{ "prefix.age": 1, "prefix.name": "Apple" }]
我使用Newtonsoft.Json来满足我的序列化需求。
只需将JsonProperty属性应用于类属性,如下所示:
class A
{
[JsonProperty("prefix.age")]
public int Age { get; set; }
[JsonProperty("prefix.name")]
public string Name { get; set; }
}
然后将其序列化:
var a = new A { Age = 1, Name = "Apple" };
var serializedObject = JsonConvert.SerializeObject(a);
serializedObject
将包含JSON字符串:{"prefix.age":1,"prefix.name":"Apple"}
。
假设您的对象是obj,您可以手动将其序列化如下:
string prefix = "prefix.";
A obj = new A();
StringWriter sw = new StringWriter();
JsonTextWriter writer = new JsonTextWriter(sw);
Type objType = obj.GetType();
PropertyInfo[] objProperties = objType.GetProperties();
writer.WriteStartObject();
foreach (var property in objProperties)
{
Object value = property.GetValue(obj, null);
writer.WritePropertyName(prefix + property.Name.ToLower());
writer.WriteValue(value);
}
writer.WriteEndObject();