如何将JavaScript对象反序列化为一个属性为Enum的对象?
我尝试使用以下代码时出错:如何将JavaScript对象反序列化为一个属性为Enum的对象?,javascript,c#,angularjs,json,json.net,Javascript,C#,Angularjs,Json,Json.net,我尝试使用以下代码时出错: filters.Filters = JsonConvert.DeserializeObject<List<SearchFilterItem>>(customFilterString); 我试图从JavaScript发送以下内容: if($.isNumeric($scope.type)){ 过滤器={ columnDisplayName:“类型Id”, columnName:'LTypeId', columnType:parseInt('1'
filters.Filters = JsonConvert.DeserializeObject<List<SearchFilterItem>>(customFilterString);
我试图从JavaScript发送以下内容:
if($.isNumeric($scope.type)){
过滤器={
columnDisplayName:“类型Id”,
columnName:'LTypeId',
columnType:parseInt('1'),
值:$scope.type.toString(),
displayValue:$scope.type.toString(),
strOperator:'Equals',逻辑:“AND”
}
Newtonsoft.Json中有一个StringEnumConverter属性,它有这个确切的用途。
您可以在此处查看相关文档:
下面是一篇博客文章,提供了有关该主题的有趣信息,例如自定义转换器:
原来这是我自己的愚蠢错误。在filterItem类中,列类型是另一个类。在该类中,我们还有一个ColumnType属性,它是一个枚举。因此,只要我将JavaScript更改为使用ColumnType:{ColumnType:'Numeric'}它本身就可以工作,不需要额外的更改。我也请同事帮助我,我们花了大约一个小时或更多的时间来研究这个问题,直到我终于明白了这一点。如果你能发布一个json示例,那将非常有帮助
public Guid Id { get; set; }
public string ColumnName { get; set; }
public string ColumnDisplayName { get; set; }
public SearchColumnTypes ColumnType { get; set; } //Character, Numeric, Boolean, Date, DateTime.
public SearchOperators Operator { get; set; }
public string Value { get; set; }
public string DisplayValue { get; set; }
public string Logic { get; set; } //And / Or