反序列化JSON列出在C#

问题描述:

JSON - http://pastebin.com/Ss1YZsLK反序列化JSON列出在C#

我需要market_hash_name值列出。我可以获得迄今为止的第一个值:

using (WebClient webClient = new System.Net.WebClient()) { 
    WebClient web = new WebClient(); 
    var json = web.DownloadString(">JSON LINK<"); 
    Desc data = JsonConvert.DeserializeObject<Desc>(json); 

    Console.WriteLine(data.rgDescriptions.something.market_hash_name); 
} 

public class Desc { 
    public Something rgDescriptions { get; set; } 
} 

public class Something { 
    [JsonProperty("822948188_338584038")] 
    public Name something { get; set; } 
} 

public class Name { 
    public string market_hash_name { get; set; } 
} 

如何获得所有如果他们?

+0

是永远'822948188_338584038','778805950_597476706'等”?总是那些? –

由于rgDescriptions中没有数组,但是一些随机命名的外观属性,我认为你需要一个自定义的JsonConverter。下面的控制台应用程序似乎是工作和正确显示market_hash_names:

class Program 
{ 
    static void Main(string[] args) 
    { 
     string json = File.ReadAllText("Sample.json"); 
     Desc result = JsonConvert.DeserializeObject<Desc>(json); 
     result.rgDescriptions.ForEach(s => Console.WriteLine(s.market_hash_name)); 
     Console.ReadLine(); 
    } 
} 

public class Desc 
{ 
    [JsonConverter(typeof(DescConverter))] 
    public List<Something> rgDescriptions { get; set; } 
} 

public class Something 
{ 
    public string appid { get; set; } 
    public string classid { get; set; } 
    public string market_hash_name { get; set; } 
} 

class DescConverter : JsonConverter 
{ 
    public override bool CanConvert(Type objectType) 
    { 
     return objectType == typeof(Something[]); 
    } 

    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) 
    { 
     var descriptions = serializer.Deserialize<JObject>(reader); 
     var result = new List<Something>(); 

     foreach (JProperty property in descriptions.Properties()) 
     { 
      var something = property.Value.ToObject<Something>(); 
      result.Add(something); 
     } 

     return result; 
    } 

    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) 
    { 
     throw new NotImplementedException(); 
    } 
} 

输出:

Genuine Tactics Pin 
Silver Operation Breakout Coin 
Operation Phoenix Challenge Coin 
Operation Bravo Challenge Coin 
+0

是的,但它有效,但如果有像这里一样的值http://pastebin.com/sLqVNdrK我想知道他们的数量 – Xizt