私はWindows Phone 8.1アプリケーションで作業しています。私はREST APIを使って作業していて、API APIを使ってJSONデータを返します。 私はAPIを呼び出すたびに、パラメータとして逆シリアル化されるクラスの型を送信し、逆モデル化されたデータをそのモデルのオブジェクトに渡すというメソッドを作成したいとします。私の現在のコードは次のようになります。Reflectionを使用して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が可変であることを私にエラーを示します。コメントしたコードも試しましたが、うまくいきません。
2つのクラスはAllvehDataとAllDevicesDataです。これらのクラスは両方とも私が話題に多くのことを検索しthisを見つけましたが、理解することができなかった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; }
}
のインスタンスでThisUserClassと呼ばれるシングルトンクラスの内部にあります。私は助けが必要です。
@BozhdarStoinevはあなたが私に教えてもらえます。 –
例に従ってください...あなたが直面している問題は? –
あなたのコードをJsonの部分に追加しました。問題はrcvdDataに値を更新しないということです。 rcvdDataは、すべてのヌル値を持つAllVehDataクラスのオブジェクトになります。 –