Newtonsoft LowerCase Formatter 不工作
Newtonsoft LowerCase Formatter not working
我正在使用网络 Api 2.
我的 WebApiConfig 中有以下代码:
GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
GlobalConfiguration.Configuration
.Formatters
.JsonFormatter
.SerializerSettings
.ContractResolver = new LowerCaseContractResolver();
var json = config.Formatters.JsonFormatter;
json.SerializerSettings.PreserveReferencesHandling = Newtonsoft.Json.PreserveReferencesHandling.Objects;
config.Formatters.Remove(config.Formatters.XmlFormatter);
其中与 LowerCaseContractResolver 相关的部分指的是:
public class LowerCaseContractResolver : DefaultContractResolver
{
protected override string ResolvePropertyName(string propertyName)
{
return propertyName.ToLower();
}
}
然后我想将名称大写的 c# 对象转换为 JArray 中的小写 JObject,如下所示:
string treeString = JsonConvert.SerializeObject(TreeViewLabelWithChildren);
JObject treeJObject = JObject.Parse(treeString);
JArray TreeJarray = new JArray();
TreeJarray.Add(treeJObject);
return TreeJarray;
返回的 JArray 仍然包含大写名称。我也尝试在 Application_Start() 中应用自定义合同解析器。我可以通过内联应用自定义合同解析器来实现它,但我想要一种全局方式来设置它。在线工作:
var settings = new JsonSerializerSettings();
settings.ContractResolver = new LowerCaseContractResolver();
string treeString = JsonConvert.SerializeObject(TreeViewLabelWithChildren, Formatting.Indented, settings);
我刚刚找到了答案。我不需要 return 一个 JArray,如果我只是 return 一个包含我的 C# 对象的数组,那么 Web Api 2 将完成剩下的工作。
我正在使用网络 Api 2.
我的 WebApiConfig 中有以下代码:
GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
GlobalConfiguration.Configuration
.Formatters
.JsonFormatter
.SerializerSettings
.ContractResolver = new LowerCaseContractResolver();
var json = config.Formatters.JsonFormatter;
json.SerializerSettings.PreserveReferencesHandling = Newtonsoft.Json.PreserveReferencesHandling.Objects;
config.Formatters.Remove(config.Formatters.XmlFormatter);
其中与 LowerCaseContractResolver 相关的部分指的是:
public class LowerCaseContractResolver : DefaultContractResolver
{
protected override string ResolvePropertyName(string propertyName)
{
return propertyName.ToLower();
}
}
然后我想将名称大写的 c# 对象转换为 JArray 中的小写 JObject,如下所示:
string treeString = JsonConvert.SerializeObject(TreeViewLabelWithChildren);
JObject treeJObject = JObject.Parse(treeString);
JArray TreeJarray = new JArray();
TreeJarray.Add(treeJObject);
return TreeJarray;
返回的 JArray 仍然包含大写名称。我也尝试在 Application_Start() 中应用自定义合同解析器。我可以通过内联应用自定义合同解析器来实现它,但我想要一种全局方式来设置它。在线工作:
var settings = new JsonSerializerSettings();
settings.ContractResolver = new LowerCaseContractResolver();
string treeString = JsonConvert.SerializeObject(TreeViewLabelWithChildren, Formatting.Indented, settings);
我刚刚找到了答案。我不需要 return 一个 JArray,如果我只是 return 一个包含我的 C# 对象的数组,那么 Web Api 2 将完成剩下的工作。