私はコントロールできない外部APIからいくつかのJSONを取得していますが、一部のフィールドがそのプロパティにネストされているオブジェクトにデシリアライズする必要があります。主要な目的ので、まっすぐなデシリアライズは動作しません。JSON.NETを使用してフラットなJSONオブジェクトをデシリアライズ
私は私の問題に発見した最も近い質問です:私はJSON.NETの使用にかなり新たなんだと今でもしようとして
私は本当にかかわらず、私の問題にこれを適用することができませんでしたそれがどのように機能するかを理解する。
バックAPIからJSONを実証するための小さなサンプル:
{
FirstName: "John",
LastName: "Smith",
PassportNo: "xxxxx",
NiNo: "xxxxx",
}
クラス(ES)私はにdeserialiseしたい:私は行く方法がわからなかった
internal sealed class Person
{
[JsonProperty(PropertyName = "FirstName")]
public string FirstName { get; set; }
[JsonProperty(PropertyName = "LastName")]
public string LastName { get; set; }
public PrivateData PrivateData { get; set; }
}
internal sealed class PrivateData
{
[JsonProperty(PropertyName = "PassportNo")]
public string PassportNo { get; set; }
[JsonProperty(PropertyName = "NiNo")]
public string NationalInsuranceNumber { get; set; }
}
必要な結果を得るためにカスタム契約リゾルバ/ JSONコンバータを実装する方法について説明します。
は、私はこのアプローチを検討したが、ハードコードに保守のためのマッピングを持っていないし、私はそれが特にパフォーマンスではないような反射を使用する必要はありません期待していました。ありがとう、おそらくちょうどこれを行い、メンテナンスオーバーヘッドを扱うでしょう。 – Vistari
また、反射しても問題が発生する可能性があります。 Personクラスでは別のクラスハンドラがあり、そのハンドラには 'NiNo'という別のプロパティがあるとしましょう。識別子(例えば 'prefix.NiNo')がない場合は、プロパティに正しい値を設定するのが最も不可能です – Tinwor