我现在正在使用Newtonsoft.Json for JSON。也许有人知道我应该为这个json请求使用什么类?
{
"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
}
答案 0 :(得分: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 );
答案 1 :(得分: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
)并传递使用步枪名称作为属性。