2017-06-17 39 views
-5

我现在使用的是用于JSON的Newtonsoft.Json。也许有人知道我的这个json请求使用什么类?如何为JSON生成类c#

{ 
"status": 1, 
"response": { 
    "AK-47 | Aquamarine Revenge (Battle-Scarred)": { 
     "price": 929, 
     "quantity": 46 
    }, 
    "AK-47 | Aquamarine Revenge (Factory New)": { 
     "price": 2716, 
     "quantity": 100 
    }, 
    "AK-47 | Aquamarine Revenge (Field-Tested)": { 
     "price": 1349, 
     "quantity": 345 
    }, 
    "AK-47 | Aquamarine Revenge (Minimal Wear)": { 
     "price": 1919, 
     "quantity": 143 
    }, 
    "AK-47 | Aquamarine Revenge (Well-Worn)": { 
     "price": 1135, 
     "quantity": 204 
    }, 
    "AK-47 | Black Laminate (Factory New)": { 
     "price": 6999, 
     "quantity": 14 
    }, 
    "AK-47 | Black Laminate (Field-Tested)": { 
     "price": 671, 
     "quantity": 83 
} 
}, 
    "time": 1497616580 
} 
+1

http://json2csharp.com/ –

回答

1

提供所有这些AK ...类来自同一派生,你应该能够使用(尽管不建议这样做,见下面我的编辑):

public class Weapon 
{ 
    public int price { get; set; } 
    public int quantity { get; set; } 
} 

public class AK47AquamarineRevengeFieldTested : Weapon 
{ 
} 

public class AK47AquamarineRevengeMinimalWear : Weapon 
{ 
} 

// etc., do this for each AK... class 

public class Response 
{ 
    public Weapon AK47AquamarineRevengeFieldTested { get; set; } 
    public Weapon AK47AquamarineRevengeMinimalWar { get; set; } 

    // Add all those weapons here, or use (you need a different JSON result though) 
    public IEnumerable<Weapon> Weapons { get ; set; } 
} 

public class Example 
{ 
    public int status { get; set; } 
    public Response response { get; set; } 
    public int time { get; set; } 
} 

编辑: 一般来说,如果你可以重新设计你的代码,你很可能会做这种方式:

public class Weapon 
{ 
    public string name { get; set; } 
    public int price { get; set; } 
    public int quantity { get; set; } 
} 

然后你就可以使用它像这样:

IEnumerable<Weapon> Weapons = new List<Weapon> 
{ 
    new Weapon { name = "AK47AquamarineRevengeFieldTestet", price = .., quantity = ..}, 
    new Weapon { name = "AK47AquamarineRevengeMinimalWar", price = .., quantity = ..}, ... 
} 

因此,您不会为每支步枪创建不同的类,而只需使用一支步枪类(本例中为Weapon),并将步枪名称作为属性使用。

2

使用该班

class StockResponse 
{ 
    public int status { get; set; } 
    public int time { get; set; } 
    public Dictionary<string,StockData> response { get; set; } 
} 

class StockData 
{ 
    public int price { get; set; } 
    public int quantity { get; set; } 
} 

,并与反序列化

var response = JsonConvert.DeserializeObject<StockResponse>(jsonResponse); 
+0

你的答案是正确的,很像我的,但你缺少的(武器)名称。 –

+0

@ThomasFlinkow不,武器名称是响应目录的关键值 –

+0

哦,我明白了,那是一个不错而优雅的答案。 +1 –