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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。