WebAPIの1つにGENERICプロパティが1つあり、HttpGetを介してWebAPIコントローラメソッドを呼び出すときにオブジェクトを返すモデルクラスがあります。応答JSONをDEシリアライズできます。ローカル変数(レスポンスのHardcoded値)にJSON文字列をコピーしようとすると、そのDEシリアライズはうまくいっていますが、動的に失敗しています。親切モデルクラスWebAPIでJsonConvert.DeserializeObjectの問題が発生しました。応答結果 - C#
見ジェネリックモデルクラス:
public class Response<T> {
public T Person { get; set; }
public string Mobile { get; set; }
public string Email { get; set; }
}
従業モデルクラス:私はWebAPIのコントローラの方法を考えてみましょタイプResponse<Celebrity>
のJSON文字列を抱えている
public class Employee {
public string EmpId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string OrganizationName { get; set; }
}
public class Celebrity {
public string FirstName { get; set; }
public string LastName { get; set; }
public string Language { get; set; }
}
public class PersonController : ApiController {
[HttpGet]
public Response<Celebrity> GetPerson() {
return new Response<Celebrity>()
{
Person = new Celebrity()
{
FirstName = "Emma",
LastName = "Watson",
Language = "English"
},
Mobile = "222123456",
Email = "[email protected]"
};
}
}
コンソールアプリケーションで、私はWebAPIコントローラメソッドを呼び出していますが、それはDEシリアル化されていません。 Iは、ステップ#1の打ち値を使用#2:#1 IはapiResponse.Content.ReadAsStringAsync().Result
{"Result":{"FirstName":"Emma","LastName":"Watson","Language":"English"},"Mobile":"222123456","Email":"[email protected]"}
ステップの値をコピー:
string jsonContent = string.Empty; var apiResponse = ApiClient.GetAsync("GetPerson").Result; if (apiResponse.IsSuccessStatusCode) { jsonContent = apiResponse.Content.ReadAsStringAsync().Result; Response<Celebrity> person = JsonConvert.DeserializeObject<Response<Celebrity>>(jsonContent); }
Iはステップ 次のアプローチを試みました
string jsonContent = "{\"Result\":{\"FirstName\":\"Emma\",\"LastName\":\"Watson\",\"Language\":\"English\"},\"Mobile\":\"222123456\",\"Email\":\"[email protected]\"}";
Response<Celebrity> person = JsonConvert.DeserializeObject<Response<Celebrity>>(jsonContent);
その働き。私は何を逃したのか分からない。
それでも私は同じ問題を取得していますようになるはずです。 –
@Mastero例外が発生するのですか、それともデシリアライズしませんか? –
いいえ例外はありませんモデルのデフォルトインスタンスを取得していますが、何も割り当てられていません。 –