C#NewtonsoftJson文档格式.docx
《C#NewtonsoftJson文档格式.docx》由会员分享,可在线阅读,更多相关《C#NewtonsoftJson文档格式.docx(9页珍藏版)》请在冰豆网上搜索。
![C#NewtonsoftJson文档格式.docx](https://file1.bdocx.com/fileroot1/2022-12/14/245b29ac-8f7d-4902-bac4-8102baf64e72/245b29ac-8f7d-4902-bac4-8102baf64e721.gif)
Json的字符串搭建格式:
JSON数据在名称/值表达中:
1、名称使用字符串,双引号表示
2、值可以是数字,
3、字符串是双引号,
4、数组是方括号,
5、对象是花括号。
Json代码实战之(读取JsonReader和解析JObect)Json
使用JsonReader读取字符串
///<
summary>
///JsonReader顺序解析
/summary>
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()
//第一种
小红"
JObjectjo=JObject.Parse(jsonText);
//加载json数据
string[]values=jo.Properties().Select(e=>
e.Name.ToString()+"
+e.Value.ToString()).ToArray<
string>
();
//获取数据
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
"
["
]
*/
JArray数组操作和嵌套json
///JArray数组类型
privatevoidjsonArray()
stringJsonArrayText=@"
[{"
小黑"
16"
},{"
小白"
17"
}]"
//反序列化对象的JSON字符串。
JArrayja=(JArray)JsonConvert.DeserializeObject(JsonArrayText);
//指定某个行的名称数据
stringname1=ja[1]["
].ToString();
Console.WriteLine(name1);
//遍历jsons数组
for(inti=0;
i<
ja.Count;
i++)
Console.WriteLine(ja[i].ToString());
///Json嵌套性数据
privatevoidjson()
try
xxx"
x1:
shantou:
[{"
zone"
哈尔"
zone_en"
街道"
}],
xia:
[{"
2999"
}]
}"
JObjecto=(JObject)JsonConvert.DeserializeObject(jsonText);
//不加方括号json类型正常输出
Console.WriteLine(o);
//输出全部
//以下输出只对数组有效
Console.WriteLine(o["
]["
x1"
shantou"
][0]);
//输出xxx类下的x1类的shantou类中的数据
][0]["
]);
//输出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<
Student>
(jsonText);
写入数据结构类
///Json数据架构类之操作之反序列化对象
///Newtonsoft.Json.JsonConvert.DeserializeObject
privatevoidjsonClass()
{
start"
{"
str1"
小蔡"
22222"
},
str2"
selfworth"
自我提升"
//反序列化公式
Studentjson=Newtonsoft.Json.JsonConvert.DeserializeObject<
json.time=DateTime.Now;
//给时间复制
json.start.str1.Age="
26"
//给年龄修改值
Console.WriteLine("
time=="
+json.time);
str1=="
+json.start.str1.Name+"
\t"
+json.start.str1.Age);
str2=="
+json.start.str2.selfworth);
数据结构类:
///Json数据架构之入口
publicclassStudent
publicDateTimetime{get;
set;
publicstastart{get;
///Json分界接口
publicclasssta
publicstastr1str1{get;
publicstastr2str2{get;
///Json输出用户信息
publicclassstastr1
publicstringName{get;
publicstringAge{get;
///Json输出用户价值
publicclassstastr2
publicstringselfworth{get;
}
v序列化
构建json数据结构类,用JsonSerializer类;
///Json数据架构类之操作之序列化
///JsonSerializer
privatevoidjsonClass2()
//方法一
sts=newst(){Name="
程序员"
Age=20};
//添加数据
//将对象序列化和反序列化为JSON格式。
该JsonSerializer使您能够控制对象的编码成JSON
JsonSerializerser=newJsonSerializer();
//JSON序列化
//写入字符初始化
ser.Serialize(newJsonTextWriter(sw),s);
//参数含义:
第一个参数设置为写入的stringwriter,第二个参数设置为输出的数据结构类
Console.WriteLine(sw.GetStringBuilder().ToString());
\n\n第二种实现方法List泛型"
//方法二
List<
st>
ls=newList<
sts1=newst(){Name="
小K1"
Age=20,ls=newList<
123"
"
456"
789"
}};
sts2=newst(){Name="
小K2"
Age=22,ls=newList<
101112"
131415"
161718"
ls.Add(s1);
ls.Add(s2);
StringWritersw1=newStringWriter();
JsonSerializerjs=newJsonSerializer();
js.Serialize(sw1,ls);
Console.WriteLine(sw1.GetStringBuilder().ToString());
}
///Json数据结构
publicclassst
publicintAge{get;
publicList<
ls{get;