2012-08-31 5 views
10

o geçersiz alan adı ile bir JSON nesnesi Deserialize için: C#nasıl yapısını follwing olan bir JSON isteği var

Şimdi
"formats": { 
     "flash_embed": "http://a3.vikiassets.com/assets/vikiplayer-922746a667cfd38137a7e45df6ba1b95.swf?auto_play=true&language_codes=en&media_id=74965&partner=16&source=api_v3", 
     "m3u8": "http://wpc.354a.edgecastcdn.net/00354A/videos/encoded/74965/ios.m3u8", 
     "res-150p": "http://wpc.354a.edgecastcdn.net/00354A/videos/encoded/74965_mp4cell_150.mp4", 
     "res-240p": "http://wpc.354a.edgecastcdn.net/00354A/videos/encoded/74965_240p.mp4", 
     "res-270p": "http://wpc.354a.edgecastcdn.net/00354A/videos/encoded/74965_270p.mp4", 
     "res-360p": "http://wpc.354a.edgecastcdn.net/00354A/videos/encoded/74965_360p.mp4", 
     "res-480p": "http://wpc.354a.edgecastcdn.net/00354A/videos/encoded/74965_480p.mp4", 
     "res-720p": "http://wpc.354a.edgecastcdn.net/00354A/videos/encoded/74965_720p.mp4" 
     } 
    } 

res-150P diyor geçersiz isim ve ben buna başka bir isim verirsen o zaman desiralize ederken herhangi bir değer alamıyorum, bu np resp 150p içinde.

Düzenleme: [Serializable] MoviesListRootObjectResponse İçeriyor kök Nesne ve daha sonra ResponseFormats

public class MoviesListRootObject 
{ 
    public int count { get; set; } 
    public Pagination pagination { get; set; } 
    public List<Response> response { get; set; } 
} 

[Serializable] 
public class Response 
{ 
    public int id { get; set; } 
    public int channel_id { get; set; } 
    public string title { get; set; } 
    public string title_language { get; set; } 
    public string description { get; set; } 
    public string description_language { get; set; } 
    public string created_at { get; set; } 
    public string uri { get; set; } 
    public string web_uri { get; set; } 
    public List<object> genres { get; set; } 
    public string origin_country { get; set; } 
    public string image { get; set; } 
    public Subtitles subtitles { get; set; } 
    public Formats formats { get; set; } 
} 

[Serializable] 
public class Formats 
{ 
    public string flash_embed { get; set; } 
    public string m3u8 { get; set; } 
    public string __invalid_name__res150p { get; set; } 
    public string __invalid_name__res240p { get; set; } 
    public string __invalid_name__res270p { get; set; } 
    public string __invalid_name__res360p { get; set; } 
    public string __invalid_name__res480p { get; set; } 
    public string __invalid_name__res720p { get; set; } 
    public string __invalid_name__flv480p { get; set; } 
    public string __invalid_name__flv360p { get; set; } 
    public string __invalid_name__flv270p { get; set; } 
    public string __invalid_name__flvvp6360p { get; set; } 
    public string __invalid_name__flvvp6270p { get; set; } 
} 
+2

Nasıl seri hale getiriyorsunuz? –

+0

Tür ile Desriliaing, var rootObj = JsonConvert.DeserializeObject (json); – Simsons

+0

Ve 'MoviesListRootObject' nedir? –

cevap

7

Sen JsonProperty nerede olursa ne gider onu anlatmak için bağlıyor ile Formats özelliklerini dekore etmek zorunda İçeriyor ad tam olarak eşleşmiyor:

partial class Formats 
{ 
    [JsonProperty("res-150p")] 
    public string __invalid_name__res150p {get; set;} 
} 

Ayrıca bkz. Using JsonConvert.DeserializeObject to deserialize Json to a C# POCO class

+1

Teşekkürler, Sadece meraklı toknow, Ayrıca normal oranlarını ve öznitelikleri kullanarak farklı isimleri bildirebilir miyim? – Simsons

+0

@Simsons Sure. Burada olan bu, değil mi? Sadece öyle olur ki JSON ile aynı ismi kullanamazsınız, böylece * yeni bir şey kullanmak için * (* __invalid_name__res150p'). –