Json   发布时间:2022-04-22  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Json.Net学习(1) 实现简单的序列化和反序列化大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

Attributes 可以用来控制Json.Net如何序列化和反序列化.Net对象。

>JsonObjectAttribute--标记在类上,用于控制该类如何被序列化为一个Json对象(JSON Object)

>JsonArrayAttribute--标记在集合上,用于控制该集合如何被序列化为一个Json集合(JSON Array)

>JsonPropertyAttribute--标记在字段和属性上,用于控制它如何被序列化为一个Json对象中的属性

>JsonConverterAttribute--标记在类或者字段和属性上,用于序列化时指定Json转换器(JsonConverter)

这 里的Memberserialization标记指定成员序列化为opt-in(每一个成员都必须标记JsonProperty或者DataMember attribute才被序列化)或者opt-out(认情况下,除了被标记为JsonIgnoreAttribute的所有成员都将被序列化,这是 Json.Net 的认行为)

Json.Net把实现了IEnumerable接口的.Net类序列化为一个Json集合,用IEnumerable 的值来填充该集合。标记JsonPropertyAttribute来重写此行为,并强制序列化器序列化该类的字段和属性

->JsonPropertyAttribute

JsonPropertyAttribute有很多用途

1.认情况下,Json 属性与.Net属性有相同的名字,这个attribute允许自定义属性

2.当member serialization 被设置成opt-in时,指定属性应该被序列化

3.在序列化和反序列化时包含非public属性

->JsonIgnoreAttribute

从序列化中排除指定的字段或者属性

->JsonConverterAttribute

JsonConverterAttribute指定Json序列化器(Jsonserializer)用来转换一个对象

这个特性可以用来标记类或者成员,当它用来标记类的时候,由attribute指定的JsonConverter将为类提供认的序列化方法.当它用来标记字段或者属性的时候,指定的JsonConverter将一直用于序列化该值。

使用JsonConverter的优先级顺序为:先成员,后类,最后为传给Jsonserializer的任何转换器.

   [JsonObject(Memberserialization.opTin)]
    public class Person
    {
        [JsonProperty("Customename")]
         public String Name { get; set; }
        [JsonProperty]
        public String Sex { get; set; }
        [JsonProperty]
        //[JsonConverter(typeof(IsodatetiR_677_11845@eConverter))]
        //[JsonConverter(typeof(JavaScriptdatetiR_677_11845@eConverter))]
        public datetiR_677_11845@e Birthday { get; set; }
    }
 String strJson = JsonConvert.serializeObject(c,FormatTing.Indented);

上面的[JsonProperty("Customename")]把Name属性重新命名为:Customename,Person类的JsonObject标签的值为Memberserialization.opTin,它要求必须显示声明需要序列化的元素.

如果我们不使用属性标签的话也就是这样:

public class Person
    {
        public String Name { get; set; }
        public String Sex { get; set; }
        public datetiR_677_11845@e Birthday { get; set; }
    }

这相当于设置了[JsonObject(Memberserialization.optOut)].此时就会执行Json.Net的认行为,除了被标记为JsonIgnoreAttribute的所有成员都将被序列化.

序列化的结果如下:

{
  "Name": "TestName","Sex": "Male","Birthday": "2013-07-22T21:41:31.4630318+08:00"
}

大佬总结

以上是大佬教程为你收集整理的Json.Net学习(1) 实现简单的序列化和反序列化全部内容,希望文章能够帮你解决Json.Net学习(1) 实现简单的序列化和反序列化所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。