zoukankan      html  css  js  c++  java
  • Newtonsoft.Json初探

    1.序列化

                VehicleModelSearchingModel model = new VehicleModelSearchingModel() { 
                    brandId = 0,
                    modelIds="0",
                    yearIds="0",
                    startTime=DateTime.Parse("2016-04-01").ToString(),
                    endTime = DateTime.Now.ToString(),
                    plateColor = 0,
                    hasPlate = 1,
                    plateNumber = "",
                    vehicleColor = "",
                    sourceIds = ""
                };
                
                string s = JsonConvert.SerializeObject(model);
                Console.WriteLine(s);

    其中,VehicleModelSearchingModel类:

    [JsonObject(MemberSerialization.OptIn)]
        public class VehicleModelSearchingModel
        {
            [JsonProperty(propertyName: "resourceUuid")]
            public string sourceIds { get; set; }
    
            [JsonProperty(propertyName:"brandId")]
            public int? brandId { get; set; }
            public string brandId_str { get; set; }
    
            [JsonProperty(propertyName: "modelId")]
            public string modelIds { get; set; }
            public string modelIds_str { get; set; }
    
            [JsonProperty(propertyName: "vehicleYearId")]
            public string yearIds { get; set; }
            public string yearIds_str { get; set; }
    
            [JsonProperty(propertyName: "timeBegin")]
            public string startTime { get; set; }
    
            [JsonProperty(propertyName: "timeEnd")]
            public string endTime { get; set; }
    
            [JsonProperty(propertyName: "lpColor")]
            public int plateColor { get; set; }
    
            [JsonProperty(propertyName: "lp")]
            public string plateNumber { get; set; }
    
            [JsonProperty(propertyName: "haslp")]
            public int hasPlate { get; set; }
    
            [JsonProperty(propertyName: "vehicleColor")]
            public string vehicleColor { get; set; }
            public int confidence { get; set; }
            public bool isExactQuery { get; set; }
            public string orderby { get; set; }
    
        }

    2.反序列化

    string s = "{"code":204,"msg":"没有符合条件的数据!","resData":null}";
    RetErr ret = JsonConvert.DeserializeObject<RetErr>(s);
    Console.WriteLine("{0},{1}", ret.ABC, ret.msg);

    其中RetErr类:

    class RetErr
        {
             [JsonProperty(propertyName:"code")]
            public string ABC { get; set; }
            public string msg { get; set; }
            public string resData { get; set; }
        }

    反序列化数组:

    var idArr = JsonConvert.DeserializeObject<string[]>(idStr);

    3.忽略某些属性

    OptOut:默认值,类中所有公有成员会被序列化,如果不想被序列化,可以用特性JsonIgnore

    OptIn:默认情况下,所有的成员不会被序列化,类中的成员只有标有特性JsonProperty的才会被序列化,当类的成员很多,但客户端仅仅需要一部分数据时,很有用

    用法:

    [JsonObject(MemberSerialization.OptIn)]
    [JsonObject(MemberSerialization.OptOut)]

    4.自定义序列化的字段名称

    [JsonProperty(propertyName: "resourceUuid")]
    public string sourceIds { get; set; }

    5.取出了中被标记为JsonProperty的字段,并获取对应的值:

    VehicleModelSearchingModel model = new VehicleModelSearchingModel() { 
                    brandId = 0,
                    modelIds="0",
                    yearIds="0",
                    startTime = Convert.ToDateTime("2015/8/25 14:15:08"),
                    endTime = Convert.ToDateTime("2015/9/25 14:15:09"),
                    plateColor = 0,
                    hasPlate = 1,
                    plateNumber = "",
                    vehicleColor = "",
                    sourceIds = ""
                };
    
                var qry = typeof(VehicleModelSearchingModel).GetProperties().Where(p => p.GetCustomAttributes(typeof(JsonPropertyAttribute), true).Any());
                object itemValue = new object();
    
                foreach (var item in qry)
                {
                    Console.WriteLine("{0}, {1}",
                        ((JsonPropertyAttribute)(item.GetCustomAttributes(typeof(JsonPropertyAttribute), true)[0])).PropertyName,
                        item.GetValue(model, null));
                }

     6.JContainer扩展类

    public static class JContainerExtension
        {
            public static List<T> ToList<T>(this JContainer container)
            {
                var lst = container.ToList();
                List<T> lstRet = new List<T>();
    
                foreach (var item in lst)
                    lstRet.Add(JsonConvert.DeserializeObject<T>(item.ToString()));
    
                return lstRet;
            }
        }

     暂时先了解了这些,因为项目中只用到了这些

    参考:http://www.cnblogs.com/yanweidie/p/4605212.html

  • 相关阅读:
    JQuery高级
    Filter&Listener
    关于用户信息的一个综合案例
    JSP,EL和JSTL
    Cookie和Session
    Request和Response
    Servlet和HTTP请求协议
    Tomcat
    xml
    数组模拟堆
  • 原文地址:https://www.cnblogs.com/zhengwk/p/5391854.html
Copyright © 2011-2022 走看看