2017-07-29 9 views
1

これは単純にjsonクラスに従い、DeserializeObjectをオブジェクトに変換します。JsonConvertはオブジェクトを正しくデシリアライズしません。

{"UnsubscribeResponse": { 
    "txId": "123", 
    "result": "Success", 
    "message": "OK" 
}} 

public class UnsubscribeResponse 
{ 
    public string TxId { get; set; } 

    public string Result { get; set; } 

    public string Message { get; set; } 
} 

私はちょうど以下のアプローチを使用しようとしましたが、誰かが私のために働いています。

unsubscribeResponse = await response.Content.ReadAsAsync<UnsubscribeResponse>(); 


unsubscribeResponse = JsonConvert.DeserializeObject<UnsubscribeResponse>(contents, new JsonSerializerSettings() 
{ 
    ContractResolver = new CamelCasePropertyNamesContractResolver(), 
         ObjectCreationHandling = ObjectCreationHandling.Auto 
}); 

それは私が以下のようにjオブジェクトクラスを使用していた働いたことの唯一の方法:

var resp = JObject.Parse(contents).SelectToken("UnsubscribeResponse"); 

誰もがすでにこの問題を持っていたし、私を助けることができますか?

+0

回答は@michelalmeidaを助けましたか? – mjwills

答えて

4

は、新しいクラスを追加します。

public class UnsubscribeResponsewrapper 
{ 
    public UnsubscribeResponse UnsubscribeResponse { get; set; } 
} 

してからではなくUnsubscribeResponseとして/ deserialisingを読んで、代わりにUnsubscribeResponseWrapperを使用しています。動作するようにあなたのコードの場合

{"UnsubscribeResponse": { 
    "txId": "123", 
    "result": "Success", 
    "message": "OK" 
}} 

、JSONのようなものである必要がある:あなたのJSONであるため、これが必要です

{ 
    "txId": "123", 
    "result": "Success", 
    "message": "OK" 
} 

あなたのJSONが持っているので、あなたが余分なクラスが必要UnsubscribeResponseプロパティ。私はあなたのJSONを見ていると思うとこれはUnsubscribeResponseオブジェクトとそのプロパティです。 しかし、実際にはあなたのJSONはそうではありません。これはUnsubscribeResponseプロパティを持つオブジェクトです(そのプロパティは独自のプロパティセットを持ちます)です。そのため、変更したJSONのJSONを変更するか、クラスごとにコードを変更する必要があります。

関連する問題