【C#】Newtonsoft.Json 常用方法总结(cctv5体育节目表)

网友投稿 903 2022-09-13

【C#】Newtonsoft.json 常用方法总结(cctv5体育节目表)

【C#】Newtonsoft.Json 常用方法总结(cctv5体育节目表)

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(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();

2.6 获取数组

Newtonsoft.Json.Linq 不支持直接获取数组,但是可以获取 List,然后再转化为数组。

string[] favorites;

if (obj["Favorites"] != null)

favorites = obj["Favorites"].Value>().ToArray();

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:autoit基础 UBound 获取数组的维度
下一篇:autoit基础 Switch Case 选择语句
相关文章

 发表评论

暂时没有评论,来抢沙发吧~