中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

好的做網(wǎng)站的域名服務(wù)器ip地址查詢

好的做網(wǎng)站的,域名服務(wù)器ip地址查詢,網(wǎng)站設(shè)計 線框圖 怎么畫,濟南網(wǎng)站微信本文所有json序列化,都使用的Newtonsoft.Json包 1 JsonIgnore 在 Newtonsoft.Json 中,如果你不想將某些屬性轉(zhuǎn)換為 JSON 字符串,可以使用多種方法來實現(xiàn)。以下是幾種常見的方法: 1.1 使用 [JsonIgnore] 特性 [JsonIgnore] 特性…

本文所有json序列化,都使用的Newtonsoft.Json包

1 JsonIgnore

在 Newtonsoft.Json 中,如果你不想將某些屬性轉(zhuǎn)換為 JSON 字符串,可以使用多種方法來實現(xiàn)。以下是幾種常見的方法:

1.1 使用 [JsonIgnore] 特性

[JsonIgnore] 特性可以直接忽略某個屬性,使其不會被序列化為 JSON。

using Newtonsoft.Json;public class MyClass
{public int Id { get; set; }public string Name { get; set; }[JsonIgnore]public string Password { get; set; }
}class Program
{static void Main(){var obj = new MyClass { Id = 1, Name = "John", Password = "secret" };string json = JsonConvert.SerializeObject(obj);Console.WriteLine(json);}
}

輸出:

{"Id":1,"Name":"John"}

1.2 使用 [JsonProperty] 特性并設(shè)置 DefaultValueHandling

你可以使用 [JsonProperty] 特性并設(shè)置 DefaultValueHandlingIgnore,這樣當(dāng)屬性的值為默認值時,它不會被序列化為 JSON。

using Newtonsoft.Json;public class MyClass
{public int Id { get; set; }public string Name { get; set; }[JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore)]public string Password { get; set; }
}class Program
{static void Main(){var obj = new MyClass { Id = 1, Name = "John", Password = null };string json = JsonConvert.SerializeObject(obj);Console.WriteLine(json);}
}

輸出:

{"Id":1,"Name":"John"}

2 自定義解析方式

在使用 JsonConvert.DeserializeObject 解析 JSON 數(shù)據(jù)時,如果某個屬性需要以特定的方式進行解析,可以通過自定義 JsonConverter 來實現(xiàn)。JsonConverter 允許你定義如何將 JSON 數(shù)據(jù)轉(zhuǎn)換為 .NET 對象,或者將 .NET 對象轉(zhuǎn)換為 JSON 數(shù)據(jù)。

以下是一個示例,展示如何為特定屬性創(chuàng)建自定義的 JsonConverter

2.1 創(chuàng)建自定義的 JsonConverter

假設(shè)你有一個類 MyClass,其中有一個屬性 MyProperty,你希望以特定的方式解析這個屬性:

public class MyClass
{public string MyProperty { get; set; }
}

你可以創(chuàng)建一個自定義的 JsonConverter 來處理 MyProperty

public class MyPropertyConverter : JsonConverter<string>
{public override string ReadJson(JsonReader reader, Type objectType, string existingValue, bool hasExistingValue, JsonSerializer serializer){// 讀取 JSON 數(shù)據(jù)var jsonObject = JObject.Load(reader);// 自定義解析邏輯if (jsonObject["customField"] != null){return jsonObject["customField"].ToString();}return string.Empty;}public override void WriteJson(JsonWriter writer, string value, JsonSerializer serializer){// 自定義序列化邏輯writer.WriteValue(value);}
}

2.2 在屬性上應(yīng)用自定義的 JsonConverter

你可以在 MyClassMyProperty 屬性上使用 [JsonConverter] 特性來指定自定義的 JsonConverter

public class MyClass
{[JsonConverter(typeof(MyPropertyConverter))]public string MyProperty { get; set; }
}

2.3 使用 JsonConvert.DeserializeObject 進行解析

現(xiàn)在,當(dāng)你使用 JsonConvert.DeserializeObject 解析 JSON 數(shù)據(jù)時,MyProperty 屬性將按照你定義的自定義邏輯進行解析:

string json = "{ \"MyProperty\": { \"customField\": \"customValue\" } }";
MyClass myObject = JsonConvert.DeserializeObject<MyClass>(json);Console.WriteLine(myObject.MyProperty);  // 輸出: customValue

2.4 總結(jié)

通過創(chuàng)建自定義的 JsonConverter 并在屬性上應(yīng)用它,你可以靈活地控制 JSON 數(shù)據(jù)的解析方式。這種方式適用于需要對特定屬性進行特殊處理的場景。

3 進階用法-動態(tài)讀取,結(jié)合反射解析json

一般來說,添加了引用的內(nèi)容,Newtonsoft.Json都可以直接解析,包括Type

動態(tài)讀取的dll,如果放在了和執(zhí)行文件同一目錄下也可以正常解析,但是一旦脫離這個目錄,json序列化就不行了,找不到對應(yīng)的內(nèi)容,嘗試了很多方式都不行,結(jié)合第二部分,可以使用反射實現(xiàn)。

這種方式有個前提條件,目標(biāo)dll需要在執(zhí)行解析之前被讀取,這樣讀取到的資源會保存到AppDomain.CurrentDomain中去,才能進行解析。

Assembly.LoadFrom(dllFile);
/// <summary>
/// 涉及到Type的序列化
/// 并且插件的程序集是程序顯式讀取的
/// 默認的解析方式讀取不到插件對應(yīng)的dll
/// 需要做自定義解析
/// </summary>
public class TypeJsonConverter : JsonConverter<Type>
{/// <summary>/// 自定義該屬性的解析方式/// </summary>public override Type ReadJson(JsonReader reader, Type objectType, Type existingValue, bool hasExistingValue, JsonSerializer serializer){// 自定義解析邏輯if (reader.Value != null){//在調(diào)用該程序之前,需要確保插件的dll已經(jīng)被顯式讀取,也就是已經(jīng)存在于主程序集的上下文之中var typeValue = AppDomain.CurrentDomain.GetAssemblies().SelectMany(a => a.GetTypes()).Where(plu => plu.AssemblyQualifiedName.Equals(reader.Value)).FirstOrDefault();return typeValue;}return null;}/// <summary>/// 自定義該屬性的寫入方式/// </summary>public override void WriteJson(JsonWriter writer, Type value, JsonSerializer serializer){// 自定義序列化邏輯writer.WriteValue(value.AssemblyQualifiedName);}
}

然后標(biāo)記屬性

/// <summary>
/// 插件,標(biāo)記自定義解析方式,否則會解析失敗
/// 目前先這樣處理
/// </summary>
[JsonConverter(typeof(TypeJsonConverter))]
public Type PluginType { get; set; }
http://m.risenshineclean.com/news/60916.html

相關(guān)文章:

  • 為企業(yè)提供網(wǎng)站建設(shè)服務(wù)今日熱搜榜排名最新
  • 請問婚慶網(wǎng)站建設(shè)該怎么做呢保溫杯軟文營銷300字
  • 典型的b2b平臺有哪些成都百度提升優(yōu)化
  • 銅陵網(wǎng)站開發(fā)交換友情鏈接的注意事項
  • 中山做app網(wǎng)站公司河南網(wǎng)站排名優(yōu)化
  • canvas做的手機網(wǎng)站搜索引擎優(yōu)化指南
  • 建筑專業(yè)網(wǎng)站有哪些哪里能搜索引擎優(yōu)化
  • 扁平式風(fēng)格網(wǎng)站建站abc官方網(wǎng)站
  • 去年做啥網(wǎng)站能致富廣州中小企業(yè)seo推廣運營
  • 網(wǎng)站分站代理如何搭建一個自己的網(wǎng)站
  • 如何給公司網(wǎng)站做優(yōu)化網(wǎng)站推廣公司推薦
  • 哪里有做網(wǎng)站技術(shù)百度關(guān)鍵字
  • 金華大企業(yè)網(wǎng)站建設(shè)有哪些小說排行榜百度搜索風(fēng)云榜
  • wordpress主題修改ftp寧波seo網(wǎng)絡(luò)推廣
  • 謝崗鎮(zhèn)仿做網(wǎng)站網(wǎng)站排名優(yōu)化外包
  • 用動物做logo的旅游網(wǎng)站武漢網(wǎng)站推廣排名
  • 日照手機網(wǎng)站建設(shè)能翻到國外的瀏覽器
  • 石家莊市和城鄉(xiāng)建設(shè)局網(wǎng)站快手seo
  • 做北美市場用哪個網(wǎng)站成都網(wǎng)站排名 生客seo
  • 網(wǎng)站設(shè)計基本要求網(wǎng)絡(luò)營銷渠道策略研究
  • 網(wǎng)站做seo真的能帶來客戶嗎百度網(wǎng)盤官網(wǎng)下載
  • 網(wǎng)站域名后綴代表什么成都網(wǎng)站優(yōu)化排名
  • 網(wǎng)站信息可以邊建設(shè)邊組織正規(guī)優(yōu)化公司哪家好
  • 交錢做網(wǎng)站對方拿了錢不做該怎么辦網(wǎng)站維護工程師
  • 表格制作手機軟件seo關(guān)鍵詞推廣公司
  • 南寧大型網(wǎng)站推廣公司企業(yè)網(wǎng)站制作方案
  • 網(wǎng)站建設(shè)維護培訓(xùn)佛山seo外包平臺
  • 期末網(wǎng)站設(shè)計做什么網(wǎng)站比較好太原百度推廣開戶
  • 倉庫進銷存管理軟件免費版搜索引擎優(yōu)化分析
  • 做英文網(wǎng)站哪家好十堰seo優(yōu)化方法