web-dev-qa-db-fra.com

Comment désérialiser une chaîne json en une liste d'objets dans c # dot

Je travaille avec la chaîne JSON suivante 

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

J'ai une structure de classe comme suit pour analyser et sentir les données 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; }
}

Comment désérialiser la chaîne JSON ci-dessus dans List?

J'utilise Newtonsoft.Json pour désérialiser.

9
G. M. Nazmul Hossain

d'abord créer une autre classe:

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

Alors utilisez,

JsonConvert.DeserializeObject<SalesTransactions>(inputString)
16
Satpal

Créez une classe comme ci-dessous
En créant la liste de la classe 'clsSalesTran' et une variable pour 'Count'

Remarque: JsonProperty est obligatoire à partir de votre chaîne Json

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

Ensuite, vous pouvez utiliser cette classe comme ci-dessous pour désérialiser

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

Utilisez l'objet désérialisé comme ci-dessous

double paymentcharge = st.transactions[0].paymentcharge;
6
Shibin Sundar
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();

    }
}

Répondez en cas de problème.

0
Vikram Bhosale