【发布时间】:2018-08-05 23:23:18
【问题描述】:
默认情况下,我在项目中使用 CamelCasePropertyNamesContractResolver 序列化为 json。但我想为一个属性更改此策略。
public class ViewTable
{
public int Id { get; set; }
[JsonProperty(NamingStrategyType = typeof(DefaultNamingStrategy), ItemTypeNameHandling = TypeNameHandling.None, TypeNameHandling = TypeNameHandling.None)]
public IEnumerable<IDictionary<string, object>> Rows { get; set; }
}
所以当我序列化这个对象时,我希望得到这样的 json:
"result": {
"id": 15,
"rows": [
{
"SessionData_Department": "",
"SystemData_SerialNumber": "1"
}
]
}
但我得到了:
"result": {
"id": 15,
"Rows": [ //There must be a lowercase!!!
{
"sessionData_Department": "", //There must be a uppercase!!!
"systemData_SerialNumber": "1"
}
]
}
我的项目中有这样的json设置:
var settings = GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings;
settings.Formatting = Formatting.Indented;
settings.ContractResolver = new CamelCasePropertyNamesContractResolver();
settings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
settings.TypeNameHandling = TypeNameHandling.Auto;
如何告诉 json 序列化程序使用 DefaultNamingStrategy 作为 IDictionary?
【问题讨论】:
标签: c# json asp.net-mvc-4 jsonserializer