亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Newtonsoft.Json怎么在c#項目中使用

發布時間:2021-02-20 16:02:55 來源:億速云 閱讀:192 作者:Leah 欄目:開發技術

本篇文章為大家展示了 Newtonsoft.Json怎么在c#項目中使用,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

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

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

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; }
}

創建一個 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 序列化

返回不縮進的 Json 字符串

JsonConvert.SerializeObject(person);

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

返回縮進的 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 將不縮進的 JSON 字符串轉成縮進形式

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 其他設置

JsonSerializerSettings settings = new JsonSerializerSettings();
// 設置日期格式
settings.DateFormatString = "yyyy-MM-dd";
// 忽略空值
settings.NullValueHandling = NullValueHandling.Ignore;
// 縮進
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 創建對象

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);
// 創建數組
JArray array = new JArray();
array.Add(new JValue("吃飯"));
array.Add(new JValue("睡覺"));
obj.Add("Favorites", array);
obj.Add("Remark", null);

2.2 JObject 中添加數組

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

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

2.3 從 Json 字符串創建 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 創建 JObject

JObject obj = JObject.FromObject(person);

用匿名對象創建 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 獲取數組

Newtonsoft.Json.Linq 不支持直接獲取數組,但是可以獲取 List,然后再轉化為數組。

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

上述內容就是 Newtonsoft.Json怎么在c#項目中使用,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

会昌县| 泽州县| 洛浦县| 抚顺县| 杭州市| 罗平县| 建阳市| 泽州县| 大埔县| 嘉峪关市| 鱼台县| 安溪县| 饶平县| 临夏县| 温州市| 黎川县| 连城县| 新郑市| 广宁县| 巨野县| 福州市| 乌兰察布市| 铜山县| 徐州市| 五台县| 平定县| 酒泉市| 谷城县| 绍兴市| 宜川县| 麻江县| 政和县| 安龙县| 大石桥市| 呈贡县| 莒南县| 疏附县| 望城县| 察雅县| 平阳县| 汕尾市|