RestSharp 反序列化到 List<MyClass>
RestSharp deserialize to List<MyClass>
我使用 RestSharp 从某个页面获取 json。响应是这样的:
{
"cars": [
{
"name": "car1",
"size": 10,
"color": "black"
},
{
"name": "car2",
"size": 20,
"color": "white"
}
]
}
我有这个 class 一辆车:
public class Car
{
public string Name { get; set; }
public int Size { get; set; }
public string Color { get; set; }
}
如何将此响应映射到汽车列表?
如果json中没有"cars":[
,很容易,但现在我需要这样:
private class Cars
{
public List<Car> Cars { get; set; }
}
...
IRestResponse<Cars> response = client.Execute<Cars>(request);
...
...response.Data.Cars...
但我觉得 class 汽车没用,我想做这样的事情:
IRestResponse<List<Car>> response = client.Execute<List<Car>>(request);
...
...response.Data...
编辑:
这是用于创建的请求:
RestClient client = new RestClient(http...));
RestRequest request = new RestRequest();
假设只有一个 'cars' 数组,下面的代码将完成工作。
var response = client.Execute<Dictionary<string,List<Car>>>(request);
//You can access cars this way.
var data = response.Data["cars"];
我不知道这是否正是您要找的,但我发现在使用 json 时这种方式非常舒服(JSonConvert 在 NewtownSoft.Json 包中)
dynamic dynamicObject = JsonConvert.DeserializeObject(jsonString);
if(dynamicObject.cars != null)
{
foreach(var car in dynamicObject.cars)
{
Car currentCar = new Car();
If(car.name != null) currentCar.Name= car.name;
If(car.size!= null) currentCar.Size= car.size;
If(car.color!= null) currentCar.Color= car.color;
myCarList.Add(currentCar);
}
}
另外我认为这可以用更少的代码完成:
JObject obj = JsonConvert.DeserializeObject(jsonString);
foreach(var car in obj["cars"])
{
myCarList.Add(JsonConvert.DeserializeObject(car.toString());
}
我使用 RestSharp 从某个页面获取 json。响应是这样的:
{
"cars": [
{
"name": "car1",
"size": 10,
"color": "black"
},
{
"name": "car2",
"size": 20,
"color": "white"
}
]
}
我有这个 class 一辆车:
public class Car
{
public string Name { get; set; }
public int Size { get; set; }
public string Color { get; set; }
}
如何将此响应映射到汽车列表?
如果json中没有"cars":[
,很容易,但现在我需要这样:
private class Cars
{
public List<Car> Cars { get; set; }
}
...
IRestResponse<Cars> response = client.Execute<Cars>(request);
...
...response.Data.Cars...
但我觉得 class 汽车没用,我想做这样的事情:
IRestResponse<List<Car>> response = client.Execute<List<Car>>(request);
...
...response.Data...
编辑:
这是用于创建的请求:
RestClient client = new RestClient(http...));
RestRequest request = new RestRequest();
假设只有一个 'cars' 数组,下面的代码将完成工作。
var response = client.Execute<Dictionary<string,List<Car>>>(request);
//You can access cars this way.
var data = response.Data["cars"];
我不知道这是否正是您要找的,但我发现在使用 json 时这种方式非常舒服(JSonConvert 在 NewtownSoft.Json 包中)
dynamic dynamicObject = JsonConvert.DeserializeObject(jsonString);
if(dynamicObject.cars != null)
{
foreach(var car in dynamicObject.cars)
{
Car currentCar = new Car();
If(car.name != null) currentCar.Name= car.name;
If(car.size!= null) currentCar.Size= car.size;
If(car.color!= null) currentCar.Color= car.color;
myCarList.Add(currentCar);
}
}
另外我认为这可以用更少的代码完成:
JObject obj = JsonConvert.DeserializeObject(jsonString);
foreach(var car in obj["cars"])
{
myCarList.Add(JsonConvert.DeserializeObject(car.toString());
}