最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

c# Newtonsoft.Json 常用方法總結(jié)

 更新時間:2021年02月19日 15:13:26   作者:丹楓無跡  
這篇文章主要介紹了c# Newtonsoft.Json 常用方法的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下

1 實體類的 Json 序列化和反序列化

我們以如下的 Person 類舉例,其中包含了常用的數(shù)據(jù)類型:

public class Person
{
 public int ID { get; set; }

 public string Name { get; set; }

 public DateTime Birthday { get; set; }

 public bool IsVIP { get; set; }
 
 public float Account { get; set; }

 public string[] Favorites { get; set; }
 
 public string Remark { get; set; }
}

創(chuàng)建一個 Person 實例:

Person person = new Person
{
 ID = 1,
 Name = "張三",
 Birthday = DateTime.Parse("2000-01-02"),
 IsVIP = true,
 Account = 12.34f,
 Favorites = new string[] { "吃飯", "睡覺" }
};

1.1 Json 序列化

返回不縮進(jìn)的 Json 字符串

JsonConvert.SerializeObject(person);

{"ID":1,"Name":"張三","Birthday":"2000-01-02T00:00:00","IsVIP":true,"Account":12.34,"Favorites":["吃飯","睡覺"],"Remark":null}

返回縮進(jìn)的 Json 字符串

JsonConvert.SerializeObject(person, Formatting.Indented);

{
 "ID": 1,
 "Name": "張三",
 "Birthday": "2000-01-02T00:00:00",
 "IsVIP": true,
 "Account": 12.34,
 "Favorites": [
  "吃飯",
  "睡覺"
 ],
 "Remark": null
}

1.2 將不縮進(jìn)的 JSON 字符串轉(zhuǎn)成縮進(jìn)形式

private string JsonIndentation(string str)
{
 //string str = JsonConvert.SerializeObject(entity);
 JsonSerializer serializer = new JsonSerializer();
 TextReader tr = new StringReader(str);
 JsonTextReader jtr = new JsonTextReader(tr);
 object obj = serializer.Deserialize(jtr);
 if (obj != null)
 {
  StringWriter textWriter = new StringWriter();
  JsonTextWriter jsonWriter = new JsonTextWriter(textWriter)
  {
   Formatting = Formatting.Indented,
   Indentation = 4,
   IndentChar = ' '
  };
  serializer.Serialize(jsonWriter, obj);
  return textWriter.ToString();
 }
 else
 {
  return str;
 }
}

或者:

private string JsonIndentation(string json)
{
 JObject obj = JObject.Parse(json);
 return obj.ToString();
}

1.3 其他設(shè)置

JsonSerializerSettings settings = new JsonSerializerSettings();
// 設(shè)置日期格式
settings.DateFormatString = "yyyy-MM-dd";
// 忽略空值
settings.NullValueHandling = NullValueHandling.Ignore;
// 縮進(jìn)
settings.Formatting = Formatting.Indented;

JsonConvert.SerializeObject(person, settings);

返回:

{
 "ID": 1,
 "Name": "張三",
 "Birthday": "2000-01-02",
 "IsVIP": true,
 "Account": 12.34,
 "Favorites": [
 "吃飯",
 "睡覺"
 ]
}

1.4 Json 反序列化

JsonConvert.DeserializeObject<Person>(json);

2 JObject 使用

2.1 創(chuàng)建對象

JObject obj = new JObject();
obj.Add("ID", 1);
obj.Add("Name", "張三");
obj.Add("Birthday", DateTime.Parse("2000-01-02"));
obj.Add("IsVIP", true);
obj.Add("Account", 12.34f);
// 創(chuàng)建數(shù)組
JArray array = new JArray();
array.Add(new JValue("吃飯"));
array.Add(new JValue("睡覺"));
obj.Add("Favorites", array);
obj.Add("Remark", null);

2.2 JObject 中添加數(shù)組

上例中的代碼可以簡化為:

JArray array = new JArray("吃飯", "睡覺");

2.3 從 Json 字符串創(chuàng)建 JObject

string json = "{\"ID\":1,\"Name\":\"張三\",\"Birthday\":\"2000-01-02T00:00:00\",\"IsVIP\":true,\"Account\":12.34,\"Favorites\":[\"吃飯\",\"睡覺\"],\"Remark\":null}";

JObject obj = JObject.Parse(json);

2.4 從 Entity 創(chuàng)建 JObject

JObject obj = JObject.FromObject(person);

用匿名對象創(chuàng)建 JObject

JObject obj = JObject.FromObject(new { name = "jack", age = 18 });

//顯示
{
 "name": "jack",
 "age": 18
}

用初始化器

JObject obj = new JObject()
{
 { "name", "jack" },
 { "age", 18 }
};

2.5 獲取值

int id;
if (obj["ID"] != null)
 id = obj["ID"].Value<int>();

2.6 獲取數(shù)組

Newtonsoft.Json.Linq 不支持直接獲取數(shù)組,但是可以獲取 List,然后再轉(zhuǎn)化為數(shù)組。

string[] favorites;
if (obj["Favorites"] != null)
 favorites = obj["Favorites"].Value<List<string>>().ToArray();

以上就是c# Newtonsoft.Json 常用方法總結(jié)的詳細(xì)內(nèi)容,更多關(guān)于c# Newtonsoft.Json的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C#飛行棋小程序設(shè)計分析

    C#飛行棋小程序設(shè)計分析

    這篇文章主要為大家設(shè)計分析了C#飛行棋小程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • C#中DataSet,DataTable,DataView的區(qū)別與用法

    C#中DataSet,DataTable,DataView的區(qū)別與用法

    這篇文章介紹了C#中DataSet,DataTable,DataView的區(qū)別與用法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • C#使用Interlocked實現(xiàn)線程同步

    C#使用Interlocked實現(xiàn)線程同步

    今天小編就為大家分享一篇關(guān)于C#使用Interlocked實現(xiàn)線程同步,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • 深入理解C#中的享元模式(Flyweight Pattern)

    深入理解C#中的享元模式(Flyweight Pattern)

    享元模式通過共享對象減少內(nèi)存占用,區(qū)分內(nèi)蘊(yùn)與外部狀態(tài),適用于大量重復(fù)對象場景,下面就來詳細(xì)的介紹一下,感興趣的可以了解一下
    2025-05-05
  • C#中結(jié)構(gòu)體定義并轉(zhuǎn)換字節(jié)數(shù)組詳解

    C#中結(jié)構(gòu)體定義并轉(zhuǎn)換字節(jié)數(shù)組詳解

    在寫C#TCP通信程序時,發(fā)送數(shù)據(jù)時,只能發(fā)送byte數(shù)組,處理起來比較麻煩不說,如果是和VC6.0等寫的程序通信的話,很多的都是傳送結(jié)構(gòu)體,在VC6.0中可以很方便的把一個char[]數(shù)組轉(zhuǎn)換為一個結(jié)構(gòu)體,而在C#卻不能直接把byte數(shù)組轉(zhuǎn)換為結(jié)構(gòu)體,要在C#中發(fā)送結(jié)構(gòu)體,應(yīng)該怎么做呢?
    2017-11-11
  • 詳解c# 類型轉(zhuǎn)換

    詳解c# 類型轉(zhuǎn)換

    這篇文章主要介紹了c# 類型轉(zhuǎn)換的相關(guān)資料,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以學(xué)習(xí)
    2020-07-07
  • C#播放鈴聲最簡單實現(xiàn)方法

    C#播放鈴聲最簡單實現(xiàn)方法

    這篇文章主要介紹了C#播放鈴聲最簡單實現(xiàn)方法,通過調(diào)用系統(tǒng)方法實現(xiàn)播放wav格式音頻文件的功能,是非常實用的技巧,需要的朋友可以參考下
    2014-12-12
  • unity3D實現(xiàn)物體任意角度自旋轉(zhuǎn)

    unity3D實現(xiàn)物體任意角度自旋轉(zhuǎn)

    這篇文章主要為大家詳細(xì)介紹了unity3D實現(xiàn)物體任意角度自旋轉(zhuǎn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • C#.NET學(xué)習(xí)筆記5 C#中的條件編譯

    C#.NET學(xué)習(xí)筆記5 C#中的條件編譯

    條件編譯是C#比Java多出的東西,但我跟前輩請教后,他們都說條件編譯在實際的項目開發(fā)中不怎么使用.鑒于是新內(nèi)容,我還是做做筆記,理解一下好了
    2012-11-11
  • C#實現(xiàn)TCP客戶端和服務(wù)器的基本功能

    C#實現(xiàn)TCP客戶端和服務(wù)器的基本功能

    本文將介紹如何使用C#實現(xiàn)TCP客戶端和服務(wù)器的基本功能,客戶端與服務(wù)器可以相互發(fā)送消息,文章通過代碼講解的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-12-12

最新評論

旬邑县| 油尖旺区| 特克斯县| 即墨市| 修文县| 文水县| 卢龙县| 高州市| 固始县| 酉阳| 东光县| 治县。| 年辖:市辖区| 镇安县| 高尔夫| 九台市| 广饶县| 邓州市| 海南省| 云梦县| 额敏县| 大竹县| 炉霍县| 辉县市| 广丰县| 孝义市| 德江县| 淮阳县| 富锦市| 伊金霍洛旗| 阳谷县| 修武县| 桦甸市| 双柏县| 芦溪县| 佛教| 舟曲县| 新竹县| 黄浦区| 巴南区| 库尔勒市|