私はプロジェクトで作業していました。私は外部RESTfulサービスコールを作成してデータを取得する必要があります。newtonsoftを使用してjson文字列をC#オブジェクトに逆シリアル化する
私がここに直面している問題は、私がサービスから得ているレスポンスが、別のシナリオでは違うことです。例えば。 1つのシナリオに
、私は、私は、モデルの下に持っている、と私は」イムは、ここに応答
{
"id":3000057,
"posted_date":"2016-04-15T07:16:47+00:00",
"current_status":"initialized",
"customer":[],
"application_address":[]
}
下の問題を取得し、応答他のシナリオでは
{
"id":3000056,
"posted_date":"2016-04-15T07:16:47+00:00",
"current_status":"initialized",
"customer":{
"name" : "George",
"lastName" : "Mike"
},
"application_address":{
"addressLine1" : "Lin1",
"addressLine2" : "Lin2",
}
}
の下に取得していますnewtonsoft deserailizationでそれをデシリアライズします。
public class Response
{
[JsonProperty("id")]
public int Id { get; set; }
[JsonProperty("posted_date")]
public DateTime PostedDate { get; set; }
[JsonProperty("current_status")]
public string CurrentStatus { get; set; }
[JsonProperty("customer")]
public Customer Customer { get; set; }
[JsonProperty("application_address")]
public ApplicationAddress ApplicationAddress { get; set; }
}
public Class Customer
{
public string name { get; set; }
public string lastName { get; set; }
}
public classs ApplicationAddress
{
public string addreesLine1{ get; set; }
public string addreesLine1{ get; set; }
}
最初の応答については、それは脱感作する。しかし、2番目の応答の場合、応答にはCustomer
とApplicationAddrees
オブジェクトの場合、[]
が含まれているため、応答は逆シリアル化されません。デシリアライズ中は配列として扱いますが、実際は配列ではありません。
注:以下のコードはデシリアライズに使用しています。 応答レスポンス= JsonConvert.DeserializeObject(result);
シリアル化する前に設定できることはありますか? newtonsoftはその機能を促進していますか?
ありがとうございました。あなたは「[]」それは配列を表して異なるものとして扱うためのデシリアライズを指示することはできません
をあなたのデシリアライズコールを共有していただけますか? –
異なるシナリオでは、異なるクラスを使用して逆シリアル化します。最初の例はあなたが持っているクラスを使用し、2番目のクラスはList、List のプロパティを持つクラスを使用します。共有プロパティには基本クラスを使用できます。異なるシナリオを呼び出す単一のエンドポイントですか? –
@TimBourguignon、私は非直列化コードで質問を更新しました。 – PaRsH