我正在研究windows phone 8.1应用程序。我正在使用REST API,并且API会返回JSON数据。 我想创建一个方法,每当我调用API时,我只发送它将被反序列化的类的类型作为参数,并将反序列化的数据转换为该模型的一个对象。我目前的代码如下所示:使用反射将JSON反序列化到不同的类中
public static async Task GetAPIData(Type referanceModel, string serviceUrl)
{
HttpClient client = new HttpClient();
var responce = await client.GetAsync(new Uri(serviceUrl));
JArray arr = JArray.Parse(await response.Content.ReadAsStringAsync());
foreach (JObject obj in arr.Children<JObject>())
{
JsonSerializerSettings settings = new JsonSerializerSettings();
settings.NullValueHandling = NullValueHandling.Ignore;
settings.MissingMemberHandling = MissingMemberHandling.Ignore;
var rcvdData = JsonConvert.DeserializeObject<referanceModel>(obj.ToString(), settings);
//var method = typeof(JsonConvert).GetTypeInfo().GetDeclaredMethods("DeserializeObject").ToList()[5].MakeGenericMethod(ReferanceModel);
//var rcvd = method.Invoke(null, new object[] { obj.ToString(), settings });
}
}
上面的代码显示了referanceModel是一个变量的错误。我也尝试了评论代码,但它不起作用。
这两个类是:AllvehData和AllDevicesData。这两个类都称为ThisUserClass与ThisUser
public class AllVehData
{
public string Colour { get; set; }
public string Make { get; set; }
public string model { get; set; }
public string Year { get; set; }
}
public class AllDevicesData
{
bool has_tracking_device { get; set; }
int drive_type_name_string_id { get; set; }
public int vehicle_status { get; set; }
public int cargo_capacity { get; set; }
public int fuel_capacity { get; set; }
}
的情况下一个单例类中我搜索的话题很多,发现this但未能理解。我需要帮助。
@BozhdarStoinev能否请你告诉我,我怎么会调用该方法。 –
只要按照这个例子...你面临什么问题? –
我把你的一段代码添加到Json部分,问题是它不会将值更新到rcvdData中。 rcvdData成为AllVehData类的一个对象,全部为空值。 –