大家好,又见面了,我是你们的朋友全栈君。
如题,根据json字符串的难易程度,C#提供的对应解析方法也不同,现做简单的归类总结:
一,对于最简单的json类型,可以使用如下方法
1.使用JsonReader类,示例代码如下
while (reader.Read()) {
Console.WriteLine(reader.TokenType + “\n” + reader.ValueType + “\n” + reader.Value);
}
2.使用JObject类,示例代码如下:
string[] meetings = jm.Properties().Select(item => item.Value.ToString()).ToArray();
二,对于复杂的json类型,使用如下方法
1.使用JArray类(主要针对数组形式的json字符串),示例代码如下:
“id”:”234″,”name”:”def”}]”;
fileid = jf[0][“id”].ToString();
filename = jf[0][“name”].ToString();
2.使用JObject类(主要是嵌套类型),示例代码如下:
string zone_en = jo1[“meeting“][“name“].ToString();
三,使用Newtonsoft.Json命名空间下的方法,示例代码如下:
private bool GetParameters() {
try {
var q = JsonConvert.DeserializeObject<ProtocolTO>(parameters);
if (q == null) return false;
id = q.id;
action = q.action;
fileid = q.fileid;
meetingid = q.meetingid;
type = q.type;
sourceid = q.sourceid;
status = q.status;
} catch {
return false;
}
return true;
}
public class ProtocolTO {
public string id { get; set; }
public string meetingid { get; set; }
public string fileid { get; set; }
public string sourceid { get; set; }
public string app { get; set; }
public string status { get; set; }
public string action { get; set; }
public string type { get; set; }
}
附录
json格式:
1、对象是一个无序的“‘名称/值’对”集合。
例子:表示人的一个对象:
{“姓名” : “abc”,”年龄” : “20”}
2、数组是值(value)的有序集合。
例子:学生对象
{“学生” :[{“姓名” : “小明” , “年龄” : “15”},{“姓名” : “tom” , “年龄” : “16”}]}
json 对象数组:[{
“姓名” : “小明” , “年龄” : “15”},{
“姓名” : “tom” , “年龄” : “16”}]
3、值(value)可以是双引号括起来的字符串(string)、数值(number)、true、false、 null、对象(object)或者数组(array)。这些结构可以嵌套。
4、字符串(string)是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/127408.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...