C#NewtonsoftJson.docx
- 文档编号:5356103
- 上传时间:2022-12-15
- 格式:DOCX
- 页数:9
- 大小:17.57KB
C#NewtonsoftJson.docx
《C#NewtonsoftJson.docx》由会员分享,可在线阅读,更多相关《C#NewtonsoftJson.docx(9页珍藏版)》请在冰豆网上搜索。
C#NewtonsoftJson
Json序列化之开源类库Newtonsoft.Json的研究
JSON类库下载地址
引用的命名空间:
usingNewtonsoft.Json;
usingNewtonsoft.Json.Linq;
Ø深入研究之前先熟悉一下几个常用的类区
类名
说明
JObject
用于操作Json对象
方法
说明
三者共同点都是返回给JObject。
而JObject类可以用到操作json对象
JObject.Parse(stringjson)
Json含有Json对象的字符串
JObject.FromObject(objecto)
转化对象
JObject.Load(JsonReaderreader)
Reader包含着Json对象
JArray
用操作json数组
JValue
表示JSON(字符串,整数,日期等)中的值。
JProperty
表示JSON属性。
ØJson的字符串搭建格式:
JSON数据在名称/值表达中:
1、名称使用字符串,双引号表示
2、值可以是数字,
3、字符串是双引号,
4、数组是方括号,
5、对象是花括号。
ØJson代码实战之(读取JsonReader和解析JObect)Json
Ø使用JsonReader读取字符串
///
///JsonReader顺序解析
///
privatevoidjsonOne()
{
stringjsonText=@"{""Name"":
""小三"",""Age"":
""22""}";
JsonReaderreader=newJsonTextReader(newStringReader(jsonText));
while(reader.Read())
{
Console.WriteLine(reader.TokenType);//名称类型
Console.WriteLine(reader.ValueType);//输出类型
Console.WriteLine(reader.Value);//输出值
Console.WriteLine();
}
}
ØJObject操作
关于JObect:
///
///JObject用于操作Json对象解析
///
privatevoidjsonTwo()
{
//第一种
stringjsonText=@"{""Name"":
""小红"",""Age"":
""22""}";
JObjectjo=JObject.Parse(jsonText);//加载json数据
string[]values=jo.Properties().Select(e=>e.Name.ToString()+":
"+e.Value.ToString()).ToArray
foreach(stringsinvalues)
{
Console.WriteLine(s);
}
//第二种
JsonReaderjr=newJsonTextReader(newStringReader(@"{""你好"":
""hihihihi""}"));
JObjectjo1=JObject.Load(jr);//加载jsonReader读取的字符串进行操作
Console.WriteLine(jo1);
//第三种
JArrayarray=newJArray();
array.Add("hi大家好");
array.Add(newDateTime().Ticks);
JObjecto=newJObject();
o["创投科技"]=array;
Console.WriteLine(o.ToString());
/*输出:
*Name:
小红
Age:
22
{
"你好":
"hihihihi"
}
{
"创投科技":
["hi大家好",]
}
*/
}
ØJArray数组操作和嵌套json
///
///JArray数组类型
///
privatevoidjsonArray()
{
stringJsonArrayText=@"[{""Name"":
""小黑"",""Age"":
""16""},{""Name"":
""小白"",""Age"":
""17""}]";
//反序列化对象的JSON字符串。
JArrayja=(JArray)JsonConvert.DeserializeObject(JsonArrayText);
//指定某个行的名称数据
stringname1=ja[1]["Name"].ToString();
Console.WriteLine(name1);
//遍历jsons数组
for(inti=0;i { Console.WriteLine(ja[i].ToString()); } } /// ///Json嵌套性数据 /// privatevoidjson() { try { stringjsonText=@" { ""xxx"": { x1: { shantou: [{""zone"": ""哈尔"",""zone_en"": ""街道""}], xia: [{""Name"": ""小红"",""Age"": ""2999""}] } } }"; JObjecto=(JObject)JsonConvert.DeserializeObject(jsonText); //不加方括号json类型正常输出 Console.WriteLine(o);//输出全部 //以下输出只对数组有效 Console.WriteLine(o["xxx"]["x1"]["shantou"][0]);//输出xxx类下的x1类的shantou类中的数据 Console.WriteLine(o["xxx"]["x1"]["shantou"][0]["zone"]);//输出xxx类下的x1类的shantou类中的Name数组 } catch(Exceptionex){Console.WriteLine(ex.ToString());} } Ø序列化Json vjsonWrite写入stringwriter并且输出 /// ///JsonWrite /// privatevoidjsonWriter() { StringWritersw=newStringWriter(); JsonWriterjw=newJsonTextWriter(sw);//json写入StringWriter jw.WritePropertyName("格式化爱情"); jw.WriteValue("努力奋斗"); Console.WriteLine(sw.ToString()); } v反序列 构建json数据结构类,用Newtonsoft.Json.JsonConvert.DeserializeObject /// ///Json数据架构类之操作之反序列化对象 ///Newtonsoft.Json.JsonConvert.DeserializeObject /// privatevoidjsonClass() { stringjsonText=@"{ ""start"": {""str1"": { ""Name"": ""小蔡"", ""Age"": ""22222"" }, ""str2"": { ""selfworth"": ""自我提升"", } } }"; //反序列化公式 Studentjson=Newtonsoft.Json.JsonConvert.DeserializeObject json.time=DateTime.Now;//给时间复制 json.start.str1.Age="26";//给年龄修改值 Console.WriteLine("time=="+json.time); Console.WriteLine("str1=="+json.start.str1.Name+"\t"+json.start.str1.Age); Console.WriteLine("str2=="+json.start.str2.selfworth); } 数据结构类: /// ///Json数据架构之入口 /// publicclassStudent { publicDateTimetime{get;set;} publicstastart{get;set;} } /// ///Json分界接口 /// publicclasssta { publicstastr1str1{get;set;} publicstastr2str2{get;set;} } /// ///Json输出用户信息 /// publicclassstastr1 { publicstringName{get;set;} publicstringAge{get;set;} } /// ///Json输出用户价值 /// publicclassstastr2 { publicstringselfworth{get;set;} } v序列化 构建json数据结构类,用JsonSerializer类;写入数据结构类 /// ///Json数据架构类之操作之序列化 ///JsonSerializer /// privatevoidjsonClass2() { //方法一 sts=newst(){Name="程序员",Age=20};//添加数据 //将对象序列化和反序列化为JSON格式。 该JsonSerializer使您能够控制对象的编码成JSON JsonSerializerser=newJsonSerializer();//JSON序列化 StringWritersw=newStringWriter();//写入字符初始化 ser.Serialize(newJsonTextWriter(sw),s);//参数含义: 第一个参数设置为写入的stringwriter,第二个参数设置为输出的数据结构类 Console.WriteLine(sw.GetStringBuilder().ToString()); Console.WriteLine("\n\n第二种实现方法List泛型"); //方法二 List sts1=newst(){Name="小K1",Age=20,ls=newList sts2=newst(){Name="小K2",Age=22,ls=newList ls.Add(s1); ls.Add(s2); StringWritersw1=newStringWriter(); JsonSerializerjs=newJsonSerializer(); js.Serialize(sw1,ls); Console.WriteLine(sw1.GetStringBuilder().ToString()); } 数据结构类: /// ///Json数据结构 /// publicclassst { publicstringName{get;set;} publicintAge{get;set;} publicList }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- NewtonsoftJson