Newtonsoft.Json怎么在c#项目中使用-创新互联
本篇文章为大家展示了 Newtonsoft.Json怎么在c#项目中使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
创新互联公司网站建设提供从项目策划、软件开发,软件安全维护、网站优化(SEO)、网站分析、效果评估等整套的建站服务,主营业务为网站制作、网站设计,成都app软件开发以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。创新互联公司深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!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();
上述内容就是 Newtonsoft.Json怎么在c#项目中使用,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联行业资讯频道。
名称栏目:Newtonsoft.Json怎么在c#项目中使用-创新互联
分享URL:http://pwwzsj.com/article/gsghc.html