JSON草稿

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;

namespace JSONDemo
{
    class Program
    {
        static void Main(string[] args)
        {
        }
    }


    [JsonObject(MemberSerialization.OptIn)]
    //这个标签指定成员序列化是opt-in(要序列化的成员必须带有JsonProperty或DataMember标签)还是opt-out(默认所有的都会序列化,但通过JsonIgnoreAttribute标签可以忽略序列化。opt-out是json.net默认的)。

    public class Customer
    {
      
        [JsonProperty(PropertyName = "ID")]
        //允许被序列化的成员自定义名字。这个标签同时标示出:在成员序列化设置为opt-in的时候,成员会被序列化。
        public int Unid { get; set; }



        [JsonProperty]

        public string CustomerName { get; set; }



        [JsonProperty]

        [JsonConverter(typeof(IsoDateTimeConverter))]

        public DateTime CreateTime { get; set; }
        public string Memo { get; set; }

    }

    //JsonIgnore:忽略域或属性的序列化

    /*JsonConverter:用于指派转换对象的JsonSerializer。这个标签可以修饰类或类成员。用于修饰类时,
     * 通过此标签指派的JsonConverter会被设置为序列化类的默认方式。用于修饰属性或域成员时,被指派的JsonConverter会序列化它们的值。*/

    /*序列化日期json中的日期是困难的。这个问题来源于json细则本身,因为在json中没有日期的原义句法。这个细则包括对象,数组,字符串,整型和浮点,
     * 但它没有对日期定义相关的标准。在json.net中用于日期的默认的格式与微软:“\/Date(1198908717056)\/”这个一样。
     * 
     * DateTime JsonConverters:因为在json中没有关于日期的标准,在系统间的互操作过程中出现了大量不同的格式。
     * 幸运的是json.net提供了用于读写自定义日期格式的解决方案:JsonConverters。一个json转换器用于指定一种类型如何被序列化。
     * 
     * 
                         * public class LogEntry

                    {

                        public string Details { get; set; }

                        public DateTime LogDate { get; set; }

                    }

                    public void WriteJsonDates()

                    {

                    LogEntry entry = new LogEntry

                    {

                        LogDate = new DateTime(2009, 2, 15, 0, 0, 0, DateTimeKind.Utc),

                        Details = "Application started."

                    };

 

                    string defaultJson = JsonConvert.SerializeObject(entry);

                    // {"Details":"Application started.","LogDate":"\/Date(1234656000000)\/"}

                    string javascriptJson = JsonConvert.SerializeObject(entry, new JavaScriptDateTimeConverter());

                    // {"Details":"Application started.","LogDate":new Date(1234656000000)}

                    string isoJson = JsonConvert.SerializeObject(entry, new IsoDateTimeConverter());

                    // {"Details":"Application started.","LogDate":"2009-02-15T00:00:00Z"}

                    }

 

                    JavaScriptDateTimeConverter

                    这个来自json.net的转换器是两种日期转换器之一。它是把日期序列化为一个js日期对象。

                    new Date(1234656000000)

 

                    IsoDateTimeConverter

                    这种转换器把日期序列化为一个ISO8601格式的字符串。

                    "2009-02-15T00:00:00Z"

                    这个类有一个日期格式化属性,用于自定义其它的格式字符串。
     * 
     * 
     * 参考:http://www.cnblogs.com/jams742003/
     */


}

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。