【问题标题】:How can i deserialize and serialize complex json data bu Newton json?我如何反序列化和序列化复杂的 json 数据 bu Newton json?
【发布时间】:2016-09-05 07:33:14
【问题描述】:

我制作了一个 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; }
    }

我试过了:

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


       foreach (ViewModel.ViewFilter item in result)
       {


       }

【问题讨论】:

标签: c# json serialization json.net deserialization


【解决方案1】:

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

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

yourString 值是您获取的包含 json 数据的字符串。

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

【讨论】:

  • 您的 json 内容是您作为 List&lt;RootObject&gt; 的镜像。您尝试的是针对您的ViewFilter 类进行序列化,该类不是List&lt;RootObject&gt;,但包含它。试试我的说法。
猜你喜欢
  • 2021-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-09
  • 1970-01-01
  • 2015-08-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多