如何解决将模型转换为动态模型,设置新属性并返回为camelCased json
我有一个模型类的对象。对于我的多个端点之一,我需要将附加属性附加到该对象,然后将所有属性作为camelCased JSON返回。我的问题是这样的:
public class MyObject {
public string Property1{get;set;}
public string Property2{get;set;}
}
public IActionResult ReturnWithAdditionalProperty(MyObject myObject) {
var dynamizedObject = (dynamic)myObject;
dynamizedObject.NewProperty = true;
return Json(dynamizedObject)
}
设置NewProperty失败(模型仍显示为MyObject项目)。
由于我不想将其添加到模型中(此属性仅在一种情况下使用)或创建新模型(由于大量的属性),我只想通过新属性使其动态化,然后返回。
我该怎么办?目前,我正在使Json序列化和反序列化成为动态,但是不幸的是,这以返回PascalCase变量名而不是camelCase结尾。
另外一个注意:端点可能返回大量此类元素时,我需要它-它应该很快。
解决方法
我找到了一些解决方案,但是我不确定这是否是最好的解决方案:
public static class ExpandoConvert {
public static ExpandoObject ConvertToExpando(object obj) {
var expando = new ExpandoObject();
var dictionary = (IDictionary<string,object>)expando;
foreach (var property in obj.GetType().GetProperties())
dictionary.Add(property.Name,property.GetValue(obj));
return expando;
}
}
并使用它:
public IActionResult ReturnWithAdditionalProperty(MyObject myObject) {
var dynamizedObject = ExpandoConvert.ConvertToExpando(myObject);
dynamizedObject.NewProperty = true;
var jsonSerializerSettings = new JsonSerializerSettings {
ContractResolver = new CamelCasePropertyNamesContractResolver(),Formatting = Formatting.Indented
};
return Json(query,jsonSerializerSettings);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。