2013-02-18 4 views
6

pracuję z następującym JSON ciągJak deserializowania json ciąg do listy obiektów w C# kropką

{ 
"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 
} 

Mam strukturę klasy w następujący sposób analizowania i uczucie danych 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; } 
} 

Jak można deserializować powyższy ciąg JSON na listę?

Używam Newtonsoft.Json do deserializacji.

Odpowiedz

11

najpierw utworzyć inną klasę:

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

następnie użyć,

JsonConvert.DeserializeObject<SalesTransactions>(inputString) 
+0

jak ozdobić członka klasy, aby pasował do obiektu JSON? Ex: obiekt JSON zawiera {1024720: "somePic.jpg"} Mam klasy Class Public Image {public string hdimage ; } –

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(); 

    } 
} 

odpowiedź z powrotem w razie jakichkolwiek problemów.

4

Tworzenie klasy jak poniżej
Tworząc listę klasy 'clsSalesTran' i zmienną do 'count'

Uwaga: JsonProperty jest obowiązkowe z Json String

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

Następnie możesz użyć tej klasy, jak poniżej, do deserializacji

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

Użyj Zdeserializowany obiekt poniżej:

double paymentcharge = st.transactions[0].paymentcharge;