C#对XML、JSON等格式的解析
2014-11-29 14:17
471 查看
C#对XML、JSON等格式的解析
一、C#对XML格式数据的解析
1、用XMLDocument来解析
[csharp] view
plaincopy
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.Load("test.xml");
//创建新节点
XmlElement nn = xmlDocument.CreateElement("image");
nn.SetAttribute("imageUrl", "6.jpg");
XmlNode node = xmlDocument.SelectSingleNode("content/section/page/gall/folder");//定位到folder节点
node.AppendChild(nn);//附加新节点
//保存
xmlDocument.Save("test.xml");
2、用Linq to XML来解析
可以通过遍历,来获得你想要的节点的内容或属性
[csharp] view
plaincopy
XElement root = XElement.Load("test.xml");
foreach (XAttribute att in root.Attributes())
{
root.Add(new XElement(att.Name, (string)att));
}
Console.WriteLine(root);
3、附一个详细点的例子
比如要解析如下的xml文件,将其转化为Ilist对象。
[html] view
plaincopy
<?xml version="1.0" encoding="utf-8"?>
<Car>
<carcost>
<ID>20130821133126</ID>
<uptime>60</uptime>
<downtime>30</downtime>
<price>0.4</price>
</carcost>
<carcost>
<ID>20130821014316</ID>
<uptime>120</uptime>
<downtime>60</downtime>
<price>0.3</price>
</carcost>
<carcost>
<ID>20130822043127</ID>
<uptime>30</uptime>
<downtime>0</downtime>
<price>0.5</price>
</carcost>
<carcost>
<ID>20130822043341</ID>
<uptime>120以上!</uptime>
<downtime>120</downtime>
<price>0.2</price>
</carcost>
</Car>
在控制台应用程序中输入如下代码即可。
[csharp] view
plaincopy
class Program
{
static void Main(string[] args)
{
IList<CarCost> resultList = new List<CarCost>();
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.Load("test.xml");
XmlNodeList xmlNodeList = xmlDocument.SelectSingleNode("Car").ChildNodes;
foreach (XmlNode list in xmlNodeList)
{
CarCost carcost = new CarCost
(
list.SelectSingleNode("ID").InnerText,
list.SelectSingleNode("uptime").InnerText,
list.SelectSingleNode("downtime").InnerText,
float.Parse(list.SelectSingleNode("price").InnerText)
);
resultList.Add(carcost);
}
IEnumerator enumerator = resultList.GetEnumerator();
while (enumerator.MoveNext())
{
CarCost carCost = enumerator.Current as CarCost;
Console.WriteLine(carCost.ID + " " + carCost.UpTime + " " + carCost.DownTime + " " + carCost.Price);
}
}
}
public class CarCost
{
public CarCost(string id, string uptime, string downtime, float price)
{
this.ID = id;
this.UpTime = uptime;
this.DownTime = downtime;
this.Price = price;
}
public string ID { get; set; }
public string UpTime { get; set; }
public string DownTime { get; set; }
public float Price { get; set; }
}
二、C#对JSON格式数据的解析
引用Newtonsoft.Json.dll文件,来解析。
比如:有个要解析的JSON字符串
[{"TaskRoleSpaces":"","TaskRoles":"","ProxyUserID":"5d9ad5dc1c5e494db1d1b4d8d79b60a7","UserID":"5d9ad5dc1c5e494db1d1b4d8d79b60a7","UserName":"姓名","UserSystemName":"2234","OperationName":"送合同负责人","OperationValue":"同意","OperationValueText":"","SignDate":"2013-06-19 10:31:26","Comment":"同意","FormDataHashCode":"","SignatureDivID":""},{"TaskRoleSpaces":"","TaskRoles":"","ProxyUserID":"2c96c3943826ea93013826eafe6d0089","UserID":"2c96c3943826ea93013826eafe6d0089","UserName":"姓名2","UserSystemName":"1234","OperationName":"送合同负责人","OperationValue":"同意","OperationValueText":"","SignDate":"2013-06-20 09:37:11","Comment":"同意","FormDataHashCode":"","SignatureDivID":""}]
首先定义个实体类:
[csharp] view
plaincopy
public class JobInfo
{
public string TaskRoleSpaces { get; set; }
public string TaskRoles { get; set; }
public string ProxyUserID { get; set; }
public string UserID { get; set; }
public string UserName { get; set; }
public string UserSystemName { get; set; }
public string OperationName { get; set; }
public string OperationValue { get; set; }
public string OperationValueText { get; set; }
public DateTime SignDate { get; set; }
public string Comment { get; set; }
public string FormDataHashCode { get; set; }
public string SignatureDivID { get; set; }
}
然后在控制台Main函数内部输入如下代码:
[csharp] view
plaincopy
string json = @"[{'TaskRoleSpaces':'','TaskRoles':'','ProxyUserID':'5d9ad5dc1c5e494db1d1b4d8d79b60a7','UserID':'5d9ad5dc1c5e494db1d1b4d8d79b60a7','UserName':'姓名','UserSystemName':'2234','OperationName':'送合同负责人','OperationValue':'同意','OperationValueText':'','SignDate':'2013-06-19 10:31:26','Comment':'同意','FormDataHashCode':'','SignatureDivID':''},{'TaskRoleSpaces':'','TaskRoles':'','ProxyUserID':'2c96c3943826ea93013826eafe6d0089','UserID':'2c96c3943826ea93013826eafe6d0089','UserName':'姓名2','UserSystemName':'1234','OperationName':'送合同负责人','OperationValue':'同意','OperationValueText':'','SignDate':'2013-06-20 09:37:11','Comment':'同意','FormDataHashCode':'','SignatureDivID':''}]
";
List<JobInfo> jobInfoList = JsonConvert.DeserializeObject<List<JobInfo>>(json);
foreach (JobInfo jobInfo in jobInfoList)
{
Console.WriteLine("UserName:" + jobInfo.UserName + "UserID:" + jobInfo.UserID);
}
这样就可以正常输出内容了。
我想肯定有人会问,如果有多层关系的json字符串该如何处理呢?没关系,一样的处理。
比如如何解析这个json字符串:[{'phantom':true,'id':'20130717001','data':{'MID':1019,'Name':'aaccccc','Des':'cc','Disable':'启用','Remark':'cccc'}}] ?
首先还是定义实体类:
[csharp] view
plaincopy
public class Info
{
public string phantom { get; set; }
public string id { get; set; }
public data data { get; set; }
}
public class data
{
public int MID { get; set; }
public string Name { get; set; }
public string Des { get; set; }
public string Disable { get; set; }
public string Remark { get; set; }
}
然后在main方法里面,键入:
[csharp] view
plaincopy
string json = @"[{'phantom':true,'id':'20130717001','data':{'MID':1019,'Name':'aaccccc','Des':'cc','Disable':'启用','Remark':'cccc'}}]";
List<Info> infoList = JsonConvert.DeserializeObject<List<Info>>(json);
foreach (Info info in infoList)
{
Console.WriteLine("id:" + info.data.MID);
}
按照我们的预期,应该能够得到1019的结果。
截图为证:
另外,对于有些json格式不是标准的,可以使用通用的方法进行解析。
[csharp] view
plaincopy
string jsonText = @" {'Count':1543,'Items':[{'UnitID':6119,'UnitName':'C'}]}";
JsonReader reader = new JsonTextReader(new StringReader(jsonText));
while (reader.Read())
{
Console.WriteLine(reader.TokenType + "\t\t" + reader.ValueType + "\t\t" + reader.Value);
}
附Newtonsoft.Json.dll下载地址:下载吧
—————————————————————————————————————————————————————————————————————————————
再附一个JSON解析的例子,来自于兔子家族—二哥在本篇博客下的回复。
JSON字符串1:{success:true,data:{id:100001,code:\"JTL-Z38005\",name:\"奥迪三轮毂\",location:\"A-202\",qty:100,bins:[{code:\"JTL-Z38001\",name:\"奥迪三轮毂\",location:\"A-001\",qty:100},{ code:\"JTL-Z38002\",name:\"奥迪三轮毂\",location:\"A-002\",qty:100}]}}
定义数据结构:
[csharp] view
plaincopy
public class Data
{
public Boolean success { get; set; }
public Data1 data { get; set; }
}
public class Data1
{
public Int32 id { get; set; }
public string code { get; set; }
public string name { get; set; }
public string location { get; set; }
public Int32 qty { get; set; }
public List<Data2> bins { get; set; }
}
public class Data2
{
public string code { get; set; }
public string name { get; set; }
public string location { get; set; }
public Int32 qty { get; set; }
}
Main函数:
[csharp] view
plaincopy
class Program
{
static void Main(string[] args)
{
string json = "{success:true,data:{id:100001,code:\"JTL-Z38005\",name:\"奥迪三轮毂\",location:\"A-202\",qty:100,bins:[{code:\"JTL-Z38001\",name:\"奥迪三轮毂\",location:\"A-001\",qty:100},{ code:\"JTL-Z38002\",name:\"奥迪三轮毂\",location:\"A-002\",qty:100}]}}";
Data data = JsonConvert.DeserializeObject<Data>(json);
foreach (var item in data.data.bins)
{
//输出:JTL-Z38001、JTL-Z38002,其它类似
Console.WriteLine(item.code);
}
}
}
JSON字符串2:{\"success\":true,\"data\":{\"name\":\"张三\",\"moulds\":{\"stockImport\":true,\"stockExport\":true,\"justifyLocation\":true,\"justifyBin\":false,\"binRelease\":false}}}
在控制台应用程序下的完整代码:
[csharp] view
plaincopy
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string json = "{\"success\":true,\"data\":{\"name\":\"张三\",\"moulds\":{\"stockImport\":true,\"stockExport\":true,\"justifyLocation\":true,\"justifyBin\":false,\"binRelease\":false}}}";
Data data = JsonConvert.DeserializeObject<Data>(json);
Console.WriteLine(data.data.moulds.binRelease);//输出False
}
}
public class Data
{
public Boolean success { get; set; }
public Data1 data { get; set; }
}
public class Data1
{
public string name { get; set; }
public Data2 moulds { get; set; }
}
public class Data2
{
public Boolean stockImport { get; set; }
public Boolean stockExport { get; set; }
public Boolean justifyLocation { get; set; }
public Boolean justifyBin { get; set; }
public Boolean binRelease { get; set; }
}
}
JSON字符串3:
{
"success": true,
"data": {
"id": 100001,
"bin": "JIT-3JS-2K",
"targetBin": "JIT-3JS-3K",
"batchs": [
"B20140101",
"B20140102"
]
}
}
他的问题主要是不知道batchs这里怎么处理,其实很简单就是一个数组而已。
完整代码如下:
[csharp] view
plaincopy
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string json = "{\"success\": true,\"data\": {\"id\": 100001,\"bin\": \"JIT-3JS-2K\",\"targetBin\": \"JIT-3JS-3K\",\"batchs\": [\"B20140101\",\"B20140102\"]}}";
Data data = JsonConvert.DeserializeObject<Data>(json);
foreach (var item in data.data.batchs)
{
Console.WriteLine(item);//输出:B20140101、B20140102
}
}
}
public class Data
{
public Boolean success { get; set; }
public Data1 data { get; set; }
}
public class Data1
{
public Int32 id { get; set; }
public string bin { get; set; }
public string targetBin { get; set; }
public string[] batchs { get; set; }
}
}
除了上述返回类的实体对象做法之外,JSON.NET还提供了JObject类,可以取自己指定节点的内容。
比如:
[csharp] view
plaincopy
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string j = "{success:true,data:{ bin:{code:\"JTL-Z38001\",name:\"奥迪三轮毂\",location:\"A-001\",qty:100}}}";
JObject jo = (JObject)JsonConvert.DeserializeObject(j);
Console.WriteLine(jo);
}
}
public class Data
{
public Boolean success { get; set; }
public Data1 data { get; set; }
}
public class Data1
{
public Data2 bin { get; set; }
}
public class Data2
{
public string code { get; set; }
public string name { get; set; }
public string location { get; set; }
public Int32 qty { get; set; }
}
}
直接运行,返回结果如下:
如果输出内容修改为:
[csharp] view
plaincopy
Console.WriteLine(jo["data"]);
继续取bin节点。
[csharp] view
plaincopy
Console.WriteLine(jo["data"]["bin"]);
最后我们取其中name对应的value。
[csharp] view
plaincopy
Console.WriteLine(jo["data"]["bin"]["name"]);
一步一步的获取了JSON字符串对应的Value。
一、C#对XML格式数据的解析
1、用XMLDocument来解析
[csharp] view
plaincopy
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.Load("test.xml");
//创建新节点
XmlElement nn = xmlDocument.CreateElement("image");
nn.SetAttribute("imageUrl", "6.jpg");
XmlNode node = xmlDocument.SelectSingleNode("content/section/page/gall/folder");//定位到folder节点
node.AppendChild(nn);//附加新节点
//保存
xmlDocument.Save("test.xml");
2、用Linq to XML来解析
可以通过遍历,来获得你想要的节点的内容或属性
[csharp] view
plaincopy
XElement root = XElement.Load("test.xml");
foreach (XAttribute att in root.Attributes())
{
root.Add(new XElement(att.Name, (string)att));
}
Console.WriteLine(root);
3、附一个详细点的例子
比如要解析如下的xml文件,将其转化为Ilist对象。
[html] view
plaincopy
<?xml version="1.0" encoding="utf-8"?>
<Car>
<carcost>
<ID>20130821133126</ID>
<uptime>60</uptime>
<downtime>30</downtime>
<price>0.4</price>
</carcost>
<carcost>
<ID>20130821014316</ID>
<uptime>120</uptime>
<downtime>60</downtime>
<price>0.3</price>
</carcost>
<carcost>
<ID>20130822043127</ID>
<uptime>30</uptime>
<downtime>0</downtime>
<price>0.5</price>
</carcost>
<carcost>
<ID>20130822043341</ID>
<uptime>120以上!</uptime>
<downtime>120</downtime>
<price>0.2</price>
</carcost>
</Car>
在控制台应用程序中输入如下代码即可。
[csharp] view
plaincopy
class Program
{
static void Main(string[] args)
{
IList<CarCost> resultList = new List<CarCost>();
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.Load("test.xml");
XmlNodeList xmlNodeList = xmlDocument.SelectSingleNode("Car").ChildNodes;
foreach (XmlNode list in xmlNodeList)
{
CarCost carcost = new CarCost
(
list.SelectSingleNode("ID").InnerText,
list.SelectSingleNode("uptime").InnerText,
list.SelectSingleNode("downtime").InnerText,
float.Parse(list.SelectSingleNode("price").InnerText)
);
resultList.Add(carcost);
}
IEnumerator enumerator = resultList.GetEnumerator();
while (enumerator.MoveNext())
{
CarCost carCost = enumerator.Current as CarCost;
Console.WriteLine(carCost.ID + " " + carCost.UpTime + " " + carCost.DownTime + " " + carCost.Price);
}
}
}
public class CarCost
{
public CarCost(string id, string uptime, string downtime, float price)
{
this.ID = id;
this.UpTime = uptime;
this.DownTime = downtime;
this.Price = price;
}
public string ID { get; set; }
public string UpTime { get; set; }
public string DownTime { get; set; }
public float Price { get; set; }
}
二、C#对JSON格式数据的解析
引用Newtonsoft.Json.dll文件,来解析。
比如:有个要解析的JSON字符串
[{"TaskRoleSpaces":"","TaskRoles":"","ProxyUserID":"5d9ad5dc1c5e494db1d1b4d8d79b60a7","UserID":"5d9ad5dc1c5e494db1d1b4d8d79b60a7","UserName":"姓名","UserSystemName":"2234","OperationName":"送合同负责人","OperationValue":"同意","OperationValueText":"","SignDate":"2013-06-19 10:31:26","Comment":"同意","FormDataHashCode":"","SignatureDivID":""},{"TaskRoleSpaces":"","TaskRoles":"","ProxyUserID":"2c96c3943826ea93013826eafe6d0089","UserID":"2c96c3943826ea93013826eafe6d0089","UserName":"姓名2","UserSystemName":"1234","OperationName":"送合同负责人","OperationValue":"同意","OperationValueText":"","SignDate":"2013-06-20 09:37:11","Comment":"同意","FormDataHashCode":"","SignatureDivID":""}]
首先定义个实体类:
[csharp] view
plaincopy
public class JobInfo
{
public string TaskRoleSpaces { get; set; }
public string TaskRoles { get; set; }
public string ProxyUserID { get; set; }
public string UserID { get; set; }
public string UserName { get; set; }
public string UserSystemName { get; set; }
public string OperationName { get; set; }
public string OperationValue { get; set; }
public string OperationValueText { get; set; }
public DateTime SignDate { get; set; }
public string Comment { get; set; }
public string FormDataHashCode { get; set; }
public string SignatureDivID { get; set; }
}
然后在控制台Main函数内部输入如下代码:
[csharp] view
plaincopy
string json = @"[{'TaskRoleSpaces':'','TaskRoles':'','ProxyUserID':'5d9ad5dc1c5e494db1d1b4d8d79b60a7','UserID':'5d9ad5dc1c5e494db1d1b4d8d79b60a7','UserName':'姓名','UserSystemName':'2234','OperationName':'送合同负责人','OperationValue':'同意','OperationValueText':'','SignDate':'2013-06-19 10:31:26','Comment':'同意','FormDataHashCode':'','SignatureDivID':''},{'TaskRoleSpaces':'','TaskRoles':'','ProxyUserID':'2c96c3943826ea93013826eafe6d0089','UserID':'2c96c3943826ea93013826eafe6d0089','UserName':'姓名2','UserSystemName':'1234','OperationName':'送合同负责人','OperationValue':'同意','OperationValueText':'','SignDate':'2013-06-20 09:37:11','Comment':'同意','FormDataHashCode':'','SignatureDivID':''}]
";
List<JobInfo> jobInfoList = JsonConvert.DeserializeObject<List<JobInfo>>(json);
foreach (JobInfo jobInfo in jobInfoList)
{
Console.WriteLine("UserName:" + jobInfo.UserName + "UserID:" + jobInfo.UserID);
}
这样就可以正常输出内容了。
我想肯定有人会问,如果有多层关系的json字符串该如何处理呢?没关系,一样的处理。
比如如何解析这个json字符串:[{'phantom':true,'id':'20130717001','data':{'MID':1019,'Name':'aaccccc','Des':'cc','Disable':'启用','Remark':'cccc'}}] ?
首先还是定义实体类:
[csharp] view
plaincopy
public class Info
{
public string phantom { get; set; }
public string id { get; set; }
public data data { get; set; }
}
public class data
{
public int MID { get; set; }
public string Name { get; set; }
public string Des { get; set; }
public string Disable { get; set; }
public string Remark { get; set; }
}
然后在main方法里面,键入:
[csharp] view
plaincopy
string json = @"[{'phantom':true,'id':'20130717001','data':{'MID':1019,'Name':'aaccccc','Des':'cc','Disable':'启用','Remark':'cccc'}}]";
List<Info> infoList = JsonConvert.DeserializeObject<List<Info>>(json);
foreach (Info info in infoList)
{
Console.WriteLine("id:" + info.data.MID);
}
按照我们的预期,应该能够得到1019的结果。
截图为证:
另外,对于有些json格式不是标准的,可以使用通用的方法进行解析。
[csharp] view
plaincopy
string jsonText = @" {'Count':1543,'Items':[{'UnitID':6119,'UnitName':'C'}]}";
JsonReader reader = new JsonTextReader(new StringReader(jsonText));
while (reader.Read())
{
Console.WriteLine(reader.TokenType + "\t\t" + reader.ValueType + "\t\t" + reader.Value);
}
附Newtonsoft.Json.dll下载地址:下载吧
—————————————————————————————————————————————————————————————————————————————
再附一个JSON解析的例子,来自于兔子家族—二哥在本篇博客下的回复。
JSON字符串1:{success:true,data:{id:100001,code:\"JTL-Z38005\",name:\"奥迪三轮毂\",location:\"A-202\",qty:100,bins:[{code:\"JTL-Z38001\",name:\"奥迪三轮毂\",location:\"A-001\",qty:100},{ code:\"JTL-Z38002\",name:\"奥迪三轮毂\",location:\"A-002\",qty:100}]}}
定义数据结构:
[csharp] view
plaincopy
public class Data
{
public Boolean success { get; set; }
public Data1 data { get; set; }
}
public class Data1
{
public Int32 id { get; set; }
public string code { get; set; }
public string name { get; set; }
public string location { get; set; }
public Int32 qty { get; set; }
public List<Data2> bins { get; set; }
}
public class Data2
{
public string code { get; set; }
public string name { get; set; }
public string location { get; set; }
public Int32 qty { get; set; }
}
Main函数:
[csharp] view
plaincopy
class Program
{
static void Main(string[] args)
{
string json = "{success:true,data:{id:100001,code:\"JTL-Z38005\",name:\"奥迪三轮毂\",location:\"A-202\",qty:100,bins:[{code:\"JTL-Z38001\",name:\"奥迪三轮毂\",location:\"A-001\",qty:100},{ code:\"JTL-Z38002\",name:\"奥迪三轮毂\",location:\"A-002\",qty:100}]}}";
Data data = JsonConvert.DeserializeObject<Data>(json);
foreach (var item in data.data.bins)
{
//输出:JTL-Z38001、JTL-Z38002,其它类似
Console.WriteLine(item.code);
}
}
}
JSON字符串2:{\"success\":true,\"data\":{\"name\":\"张三\",\"moulds\":{\"stockImport\":true,\"stockExport\":true,\"justifyLocation\":true,\"justifyBin\":false,\"binRelease\":false}}}
在控制台应用程序下的完整代码:
[csharp] view
plaincopy
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string json = "{\"success\":true,\"data\":{\"name\":\"张三\",\"moulds\":{\"stockImport\":true,\"stockExport\":true,\"justifyLocation\":true,\"justifyBin\":false,\"binRelease\":false}}}";
Data data = JsonConvert.DeserializeObject<Data>(json);
Console.WriteLine(data.data.moulds.binRelease);//输出False
}
}
public class Data
{
public Boolean success { get; set; }
public Data1 data { get; set; }
}
public class Data1
{
public string name { get; set; }
public Data2 moulds { get; set; }
}
public class Data2
{
public Boolean stockImport { get; set; }
public Boolean stockExport { get; set; }
public Boolean justifyLocation { get; set; }
public Boolean justifyBin { get; set; }
public Boolean binRelease { get; set; }
}
}
JSON字符串3:
{
"success": true,
"data": {
"id": 100001,
"bin": "JIT-3JS-2K",
"targetBin": "JIT-3JS-3K",
"batchs": [
"B20140101",
"B20140102"
]
}
}
他的问题主要是不知道batchs这里怎么处理,其实很简单就是一个数组而已。
完整代码如下:
[csharp] view
plaincopy
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string json = "{\"success\": true,\"data\": {\"id\": 100001,\"bin\": \"JIT-3JS-2K\",\"targetBin\": \"JIT-3JS-3K\",\"batchs\": [\"B20140101\",\"B20140102\"]}}";
Data data = JsonConvert.DeserializeObject<Data>(json);
foreach (var item in data.data.batchs)
{
Console.WriteLine(item);//输出:B20140101、B20140102
}
}
}
public class Data
{
public Boolean success { get; set; }
public Data1 data { get; set; }
}
public class Data1
{
public Int32 id { get; set; }
public string bin { get; set; }
public string targetBin { get; set; }
public string[] batchs { get; set; }
}
}
除了上述返回类的实体对象做法之外,JSON.NET还提供了JObject类,可以取自己指定节点的内容。
比如:
[csharp] view
plaincopy
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string j = "{success:true,data:{ bin:{code:\"JTL-Z38001\",name:\"奥迪三轮毂\",location:\"A-001\",qty:100}}}";
JObject jo = (JObject)JsonConvert.DeserializeObject(j);
Console.WriteLine(jo);
}
}
public class Data
{
public Boolean success { get; set; }
public Data1 data { get; set; }
}
public class Data1
{
public Data2 bin { get; set; }
}
public class Data2
{
public string code { get; set; }
public string name { get; set; }
public string location { get; set; }
public Int32 qty { get; set; }
}
}
直接运行,返回结果如下:
如果输出内容修改为:
[csharp] view
plaincopy
Console.WriteLine(jo["data"]);
继续取bin节点。
[csharp] view
plaincopy
Console.WriteLine(jo["data"]["bin"]);
最后我们取其中name对应的value。
[csharp] view
plaincopy
Console.WriteLine(jo["data"]["bin"]["name"]);
一步一步的获取了JSON字符串对应的Value。
相关文章推荐
- C#对XML、JSON等格式的解析
- C#对XML、JSON等格式的解析
- C#对XML、JSON等格式的解析
- C#对XML、JSON等格式的解析
- 详解C#对XML、JSON等格式的解析
- C#对XML、JSON等格式的解析
- C#对XML、JSON等格式的解析 (转)
- C# 解析json格式字符串
- java将xml解析,然后将其转换为json格式(②)
- c# 窗体应用程序中解析json格式
- Unity3D 游戏引擎之使用 C#合成解析XML与JSON
- java将xml解析,然后将其转换为json格式(①)
- Android Json 数据解析 II 之 ------xml ,json 两种数据格式之对比
- c#解析XML和JSON
- C# 解析JSON格式数据
- WindowsPhone中XML和Json格式的数据解析
- php下哪种方法合适解析xml,转换成json格式
- Android访问网络系列之--服务端返回XML或JSON格式数据,Android 进行解析并显示
- Unity3D研究院之使用 C#合成解析XML与JSON(四十一)(转自雨松MOMO)