我如何反序列化和序列化复杂的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)
{
}
接收数据时,使用NewtonSoft JsonConvert类:
var serializerSettings = new JsonSerializerSettings
{ ContractResolver = new CamelCasePropertyNamesContractResolver() };
var fields = JsonConvert.DeserializeObject<List<RootObject>>(yourString, serializerSettings);
yourString值是你得到的字符串,其中包含你的json数据。
CamelCasePropertyNamesContractResolver按照其名称所指示的驼色大小写负责序列化对象名称。