C# ASP.NET MVC4和剑道UI“;过滤器";:从对象类型返回JSON
我使用MVC4控制器在服务器上读取一个.json文件,该文件包含(除其他内容外)要在KendoUIDataSource上使用的过滤条件声明 我想将它加载到一个对象中,然后通过JsonResult将它发送到客户机 这是我想发送的json部分:C# ASP.NET MVC4和剑道UI“;过滤器";:从对象类型返回JSON,c#,json,asp.net-mvc-4,kendo-ui,C#,Json,Asp.net Mvc 4,Kendo Ui,我使用MVC4控制器在服务器上读取一个.json文件,该文件包含(除其他内容外)要在KendoUIDataSource上使用的过滤条件声明 我想将它加载到一个对象中,然后通过JsonResult将它发送到客户机 这是我想发送的json部分: { activate: { logic: "or", filters: [ { field: "fieldA", operator: "eq", value: 100 },
{
activate: {
logic: "or",
filters: [
{ field: "fieldA", operator: "eq", value: 100 },
{
logic: "and",
filters: [
{ field: "fieldA", operator: "lt", value: 100 },
{ field: "fieldB", operator: "eq", value: true }
]
}
]
}
}
我定义了一个类来映射我的json数据:
public class ItemModel
{
public Object activate { get; set; }
}
作为一种类型,我使用对象,因为其中包含的值可能不同,所以它不是递归结构,或者包含保留字作为“运算符”
然后,我通过以下方式阅读json:
JsonSerializer serializer = new JsonSerializer();
ItemModel i = serializer.Deserialize<ItemModel>(new JsonTextReader(reader));
JsonSerializer serializer=新的JsonSerializer();
ItemModel i=serializer.Deserialize(新的JsonTextReader(reader));
此时,由于我将“Object”定义为“activate”json对象的类型,我在变量中找到了一个对象,该对象引用“Newtonsoft.json.Linq.JContainer”作为其基础,该对象传递给“json(I)”,在客户机上的结果类似于“[[[]]、[[[[]]、[[[[]]、[[[[]]、[[[]]、[[[[]]、[[[]]、[[]]
是否有可能将真实的json数据返回给客户端,而不是“Object”对象的序列化(或json()解析器遇到麻烦的等效对象)?
怎么做
谢谢到目前为止,我发现最好的方法是对返回的对象使用“JsonConvert.SerializeObject”:
JsonSerializer serializer = new JsonSerializer();
ItemModel i = serializer.Deserialize<ItemModel>(new JsonTextReader(reader));
JsonConvert.SerializeObject(i, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore });
JsonSerializer serializer=新的JsonSerializer();
ItemModel i=serializer.Deserialize(新的JsonTextReader(reader));
SerializeObject(i,新的JsonSerializerSettings{NullValueHandling=NullValueHandling.Ignore});