2012-05-05 11 views
1

ウェブサービスからJSON文字列を逆シリアル化したいと思います。私の問題は、(Result型の)逆シリアル化されたオブジェクトクラス配列には常に0個の項目が含まれていることです...メトロアプリケーション - JSON文字列を逆シリアル化する

しかし、webserviceは正しい文字列を返します。 私は文字列/ストリームを逆シリアル化する方法で障害が発生すると思います。

私の欠点は何ですか?

//JSON result string: 

{"Results": 
    [{"Result":{ 
    "Name":"Rechnung2", 
    "Date1":"2012-10-05", 
    "Item1":"50", 
    "Item2":"10", 
    "CompanyName":"Contoso", 
    "Description":"My description"}}] 
}  


[DataContract] 
public class Result 
{ 
    [DataMember] 
    public string Name { get; set; } 
    [DataMember] 
    public string Date1 { get; set; } 
    [DataMember] 
    public string Item1 { get; set; } 
    [DataMember] 
    public string Item2 { get; set; } 
    [DataMember] 
    public string CompanyName { get; set; } 
    [DataMember] 
    public string Description { get; set; } 
} 

public async void GetjsonStream() 
    { 
     HttpClient client = new HttpClient(); 
     string url = "http://localhost/test/api.php?format=json&key=12345"; 
     HttpResponseMessage response = await client.GetAsync(url); 

     //ReadAsStringAsync() works fine, so I think ReadAsStreamAsync() works also fine 
     var str = await response.Content.ReadAsStreamAsync(); 

     DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(Result[])); 

     //Result has always 0 items 
     Result[] res = (Result[])ser.ReadObject(str); 
    } 

答えて

3

私自身はDataContractJsonSerializer使用していないので、これは最高アプローチではないかもしれない - しかし、私はこの問題は、JSONは「結果のコレクションを含むオブジェクト」を表していることであると思われる - はありません「結果の収集 "を行う。

[DataContract] 
public class ResultCollection 
{ 
    [DataMember] 
    public Result[] Results { get; set; } 
} 

... 

var ser = new DataContractJsonSerializer(typeof(ResultCollection)); 
var collection = (ResultCollection)ser.ReadObject(str); 
var results = collection.Results; 

あなたはそれが便利だ場合、あまりにもList<Result>Resultsの種類を変更することができる場合があります

は、既存のコードに加えて、これを試してみてください。

(これは、少なくとも右のラインに沿っているように見えるので、私は上記のコードを試してみた、そしてそれは私に正しい結果を与えた...)

+0

おかげジョン。 コードを少し修正するだけでうまくいきます。 ありがとう:-)。 ところで、私はあなたの本を読みました、素敵な説明と記事;) – user1011394

関連する問題