2009-12-21 11 views
6

Sto cercando di desertificare alcuni JSON in una raccolta (elenco), ma non sono sicuro di quale metodo restituirà un elenco di oggetti, oppure devo scorrere qualcosa e copiarlo nella mia lista?JSON.net deseralizza in un elenco di oggetti in C# .net 2.0

Qualcuno può dirmi la sintassi o il metodo che dovrei usare per questo.

Ho creato il mio oggetto con alcune proprietà, quindi è pronto per essere utilizzato per contenere i dati. (Titolo, URL, descrizione)

Ho provato questo, ma non mi sembra giusto

List<newsItem> test = (List<newsItem>)JsonConvert.DeserializeObject(Fulltext); 

risposta

5

Hai provato guardando l'aiuto?

http://james.newtonking.com/json/help/?topic=html/SerializingCollections.htm

string json = @"[ 
    { 
    ""Name"": ""Product 1"", 
    ""ExpiryDate"": ""\/Date(978048000000)\/"", 
    ""Price"": 99.95, 
    ""Sizes"": null 
    }, 
    { 
    ""Name"": ""Product 2"", 
    ""ExpiryDate"": ""\/Date(1248998400000)\/"", 
    ""Price"": 12.50, 
    ""Sizes"": null 
    } 
]"; 

List<Product> products = JsonConvert.DeserializeObject<List<Product>>(json); 

Console.WriteLine(products.Count); 
// 2 

Product p1 = products[0]; 

Console.WriteLine(p1.Name); 
// Product 1 
+1

Ah ah, grazie, proverò questo fuori .. ho provato guardando attraverso la documentazione, ma non ho trovato questo. –

0

provare a utilizzare matrice anziché elenco generico. questo può aiutare.

1

Sto usando questi metodi di estensione:

public static string ToJSONArray<T>(this IEnumerable<T> list) 
    { 
     DataContractJsonSerializer s = new DataContractJsonSerializer(typeof(IEnumerable<T>)); 
     MemoryStream ms = new MemoryStream(); 
     s.WriteObject(ms, list); 
     return GetEncoder().GetString(ms.ToArray()); 
    } 

    public static IEnumerable<T> FromJSONArray<T>(this string jsonArray) 
    { 
     if (string.IsNullOrEmpty(jsonArray)) return new List<T>(); 

     DataContractJsonSerializer s = new DataContractJsonSerializer(typeof(IEnumerable<T>)); 
     MemoryStream ms = new MemoryStream(GetEncoder().GetBytes(jsonArray)); 
     var result = (IEnumerable<T>)s.ReadObject(ms); 
     if (result == null) 
     { 
      return new List<T>(); 
     } 
     else 
     { 
      return result; 
     } 
    } 

che serve per decorare i vostri oggetti come questo:

[DataContract] 
public class MyJSONObject 
{ 
    [DataMember] 
    public int IntValue { get; set; } 
    [DataMember] 
    public string StringValue { get; set; } 
} 
Problemi correlati