c# Newtonsoft.Json 常用方法总结
1实体类的Json序列化和反序列化
我们以如下的Person类举例,其中包含了常用的数据类型:
publicclassPerson { publicintID{get;set;} publicstringName{get;set;} publicDateTimeBirthday{get;set;} publicboolIsVIP{get;set;} publicfloatAccount{get;set;} publicstring[]Favorites{get;set;} publicstringRemark{get;set;} }
创建一个Person实例:
Personperson=newPerson { ID=1, Name="张三", Birthday=DateTime.Parse("2000-01-02"), IsVIP=true, Account=12.34f, Favorites=newstring[]{"吃饭","睡觉"} };
1.1Json序列化
返回不缩进的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字符串转成缩进形式
privatestringJsonIndentation(stringstr) { //stringstr=JsonConvert.SerializeObject(entity); JsonSerializerserializer=newJsonSerializer(); TextReadertr=newStringReader(str); JsonTextReaderjtr=newJsonTextReader(tr); objectobj=serializer.Deserialize(jtr); if(obj!=null) { StringWritertextWriter=newStringWriter(); JsonTextWriterjsonWriter=newJsonTextWriter(textWriter) { Formatting=Formatting.Indented, Indentation=4, IndentChar='' }; serializer.Serialize(jsonWriter,obj); returntextWriter.ToString(); } else { returnstr; } }
或者:
privatestringJsonIndentation(stringjson) { JObjectobj=JObject.Parse(json); returnobj.ToString(); }
1.3其他设置
JsonSerializerSettingssettings=newJsonSerializerSettings(); //设置日期格式 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.4Json反序列化
JsonConvert.DeserializeObject(json);
2JObject使用
2.1创建对象
JObjectobj=newJObject(); obj.Add("ID",1); obj.Add("Name","张三"); obj.Add("Birthday",DateTime.Parse("2000-01-02")); obj.Add("IsVIP",true); obj.Add("Account",12.34f); //创建数组 JArrayarray=newJArray(); array.Add(newJValue("吃饭")); array.Add(newJValue("睡觉")); obj.Add("Favorites",array); obj.Add("Remark",null);
2.2JObject中添加数组
上例中的代码可以简化为:
JArrayarray=newJArray("吃饭","睡觉");
2.3从Json字符串创建JObject
stringjson="{\"ID\":1,\"Name\":\"张三\",\"Birthday\":\"2000-01-02T00:00:00\",\"IsVIP\":true,\"Account\":12.34,\"Favorites\":[\"吃饭\",\"睡觉\"],\"Remark\":null}"; JObjectobj=JObject.Parse(json);
2.4从Entity创建JObject
JObjectobj=JObject.FromObject(person);
用匿名对象创建JObject
JObjectobj=JObject.FromObject(new{name="jack",age=18}); //显示 { "name":"jack", "age":18 }
用初始化器
JObjectobj=newJObject() { {"name","jack"}, {"age",18} };
2.5获取值
intid; 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();
以上就是c#Newtonsoft.Json常用方法总结的详细内容,更多关于c#Newtonsoft.Json的资料请关注毛票票其它相关文章!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。