详解C#对XML、JSON等格式的解析

2019-12-30 15:09:52王振洲

这样就可以正常输出内容了。

我想肯定有人会问,如果有多层关系的json字符串该如何处理呢?没关系,一样的处理。

比如如何解析这个json字符串:[{'phantom':true,'id':'20130717001','data':{'MID':1019,'Name':'aaccccc','Des':'cc','Disable':'启用','Remark':'cccc'}}]  ?

首先还是定义实体类:


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方法里面,键入:


string json = @"[{'phantom':true,'id':'20130717001','data':{'MID':1019,'Name':'aaccccc','Des':'cc','Disable':'启用','Remark':'cccc'}}]"; 
List<Info> infoList = JsonConvertDeserializeObject<List<Info>>(json); 
 
foreach (Info info in infoList) 
{ 
  ConsoleWriteLine("id:" + infodataMID); 
} 

按照我们的预期,应该能够得到1019的结果。

截图为证:

c#,解析xml,json解析

再附一个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}]}}

定义数据结构:


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函数:


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 = JsonConvertDeserializeObject<Data>(json); 
 
      foreach (var item in datadatabins) 
      { 
        //输出:JTL-Z38001、JTL-Z38002,其它类似 
        ConsoleWriteLine(itemcode); 
      } 
    } 
  }