2013-02-18 79 views
6

我用下面的JSON字符串如何反序列化JSON字符串在C#中的点到对象列表

{ 
"transactions": 
[ 
    { 
    "paymentcharge":"0.0", 
    "amount":352, 
    "id":13418, 
    "shippingcharge":35, 
    "shippingtype":2, 
    "status":2, 
    "paymenttype":1, 
    "date":"2012-10-06 16:15:28.0" 
    }, 
    { 
    "paymentcharge":"0.0", 
    "amount":42455, 
    "id":16305, 
    "shippingcharge":0, 
    "shippingtype":2, 
    "status":2, 
    "paymenttype":2, 
    "date":"2012-11-30 09:29:29.0" 
    }, 
    { 
    "paymentcharge":"1.0", 
    "amount":42456, 
    "id":16305, 
    "shippingcharge":0, 
    "shippingtype":2, 
    "status":2, 
    "paymenttype":2, 
    "date":"2012-11-30 09:29:29.0" 
    } 
], 
"count":3 
} 

我有一个类结构解析如下,感觉JSON数据

class clsSalesTran 
{ 
    public double paymentcharge { get; set; } 
    public double amount { get; set; } 
    public long id { get; set; } 
    public int shippingcharge { get; set; } 
    public int shippingtype { get; set; } 
    public int status { get; set; } 
    public int paymenttype { get; set; } 
    public DateTime date { get; set; } 
} 
工作

如何反序列化上面的JSON字符串到列表中?

我正在使用Newtonsoft.Json进行反序列化。

回答

11

首先创建另一个类:

public class SalesTransactions 
{ 
    public List<clsSalesTran> transactions {get;set;} 
    public int count{get;set;} 
} 

然后使用,在任何问题时

JsonConvert.DeserializeObject<SalesTransactions>(inputString) 
+0

如何装饰类成员以匹配JSON对象? 对于防爆:JSON对象包含{1024720: “somePic.jpg”} 我有一个类 公共类别图像 { 公共字符串HdImage; } – 2014-02-25 11:14:28

0
class WeapsCollection 
{ 
    public Dictionary<string, WeaponDetails> Weapons { get; set; } 

} 

class WeaponList 
{ 
    public WeaponDetails AEK { get; set; } 
    public WeaponDetails XM8 { get; set; } 
} 

class WeaponDetails 
{ 
    public string Name { get; set; } 
    public int Kills { get; set; } 
    public int Shots_Fired { get; set; } 
    public int Shots_Hit { get; set; } 
} 

class Program 
{ 
    static void Main(string[] args) 
    { 
     string json = @" 
     { 
      'weapons': 

        { 
         'aek': 
          { 
           'name':'AEK-971 Vintovka', 
           'kills':47, 
           'shots_fired':5406, 
           'shots_hit':858 
          }, 
         'xm8': 
          { 
           'name':'XM8 Prototype', 
           'kills':133, 
           'shots_fired':10170, 
           'shots_hit':1790 
          }, 
        } 

     }"; 

     WeapsCollection weps = JsonConvert.DeserializeObject<WeapsCollection>(json); 
     Console.WriteLine(weps.Weapons.First().Value.Shots_Fired);    

     Console.ReadLine(); 

    } 
} 

回信。

4

创建一个类,如下
通过创建类的clsSalesTran“的列表,并为“计数”

注意一个变量:JsonProperty是从您的JSON字符串

public class SalesTransactions 
{ 
    [JsonProperty("transactions")] 
    public List<clsSalesTran> transactions {get;set;} 
    public int count{get;set;} 
} 

然后强制您可以使用此类如下进行反序列化

SalesTransactions st = JsonConvert.DeserializeObject<SalesTransactions>(inputString) 

使用t他反序列化对象如下

double paymentcharge = st.transactions[0].paymentcharge; 
相关问题