我如何反序列化和序列化复杂的json数据,但牛顿json

本文关键字:json 数据 复杂 反序列化 序列化 | 更新日期: 2023-09-27 18:05:50

我做了一个jquery过滤器工具,它返回到我的服务器端过滤器数据json。我想把它转换成一个c#类,我也想把任何c#类转换成我的json。

我的json和下面的镜像c#类:

[{"field":{"label":"Category","value":"category"},"operator":{"label":"any of","value":"in"},"value":{"label":"(Family, Friends)","value":"1,2"}},{"field":{"label":"Age","value":"age"},"operator":{"label":">","value":"gt"},"value":{"label":"18","value":"18"}},{"field":{"label":"Firstname","value":"firstname"},"operator":{"label":"equals","value":"eq"},"value":{"label":"'"test'"","value":"test"}},{"field":{"label":"Lastname","value":"lastname"},"operator":{"label":"equals","value":"eq"},"value":{"label":"'"test2'"","value":"test2"}}]

c#镜像:


public class Field
{
    public string label { get; set; }
    public string value { get; set; }
}
public class Operator
{
    public string label { get; set; }
    public string value { get; set; }
}
public class Value
{
    public string label { get; set; }
    public string value { get; set; }
}
public class RootObject
{
    public Field field { get; set; }
    public Operator @operator { get; set; }
    public Value value { get; set; }
}

我试过了:

   public class ViewFilter
{
    public List<Field> Fields { get; set; }
    public List<Operator> Operators { get; set; }
    public List<Value> Values { get; set; }
    public List<RootObject> RootObjects { get; set; }
}
    public class Field
    {
        public string label { get; set; }
        public string value { get; set; }
    }
    public class Operator
    {
        public string label { get; set; }
        public string value { get; set; }
    }
    public class Value
    {
        public string label { get; set; }
        public string value { get; set; }
    }
    public class RootObject
    {
        public Field field { get; set; }
        public Operator @operator { get; set; }
        public Value value { get; set; }
    }

i tried:

 var result =  JsonConvert.DeserializeObject<List<ViewModel.ViewFilter>>(filter).ToList();

       foreach (ViewModel.ViewFilter item in result)
       {

       }

我如何反序列化和序列化复杂的json数据,但牛顿json

接收数据时,使用NewtonSoft JsonConvert类:

var serializerSettings = new JsonSerializerSettings
    { ContractResolver = new CamelCasePropertyNamesContractResolver() };
var fields = JsonConvert.DeserializeObject<List<RootObject>>(yourString, serializerSettings);

yourString值是你得到的字符串,其中包含你的json数据。

CamelCasePropertyNamesContractResolver按照其名称所指示的驼色大小写负责序列化对象名称。