7

注:もともとJSON.NETを使用してJSONを解析することを考えていたので、この質問の祖先である同様の質問を投稿しましたが、組み込みのデシリアライザーを使用しているため、別の質問です。

これが私がやろうとしていることです: たとえば、Item というクラスがあります。json には多くの「要素」があり (そう呼ばれている場合は、Item クラスを模倣しています)、それぞれに id という名前の整数、name という名前の文字列、および creationTime という名前の日時の 3 つのフィールドが含まれています。これらすべてのアイテムの「要素」をjsonからアイテムオブジェクトのリストに解析したいと思います。JSON と一致するように、Item クラスに 3 つのフィールドを作成しました。

これは私が現在やっていることです:

JavaScriptSerializer ser = new JavaScriptSerializer();          
List<Item> items = ser.Deserialize<Item>(new StreamReader(response.GetResponseStream()).ReadToEnd());

<superapi.Itemただし、「タイプ 'superapi.Item' を 'System.Collections.Generic.List >'に暗黙的に変換できない」ため、これは機能しません。したがって、JSON には Item アーキテクチャの多くの要素があるため、この問題にアプローチする方法がわかりません。これを foreach ループで実行し、JSON で逆シリアル化された各アイテムを見つけて、それをリストに追加し、ループを続行することは何とか可能ですか? いくつかの同様のコードでそれを実行しようとしており、結果を投稿します。

ありがとう!

更新: JSON の一部は次のようになります。

[{
    "Id": 1,
    "Name": "First item name",
    "creationTime": "\/Date(1247258293690)\/"
},
{
    "Id": 2,
    "Name": "Second item name",
    "creationTime": "\/Date(1247088323430)\/"
}]

これは私の Item クラスがどのように見えるかです:

public class Item
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public DateTime creationTime { get; set; }
    }
4

1 に答える 1

8

私はあなたの例のjson /クラスを試してみましたが、以下はうまくいきます:

List<Item> items = ser.Deserialize<List<Item>>(json);

実際のコードは違いますか?

(文字列はどこですか - etc でjson自由に置き換えてください。または、より簡単な を使用してください)ReadToEndWebClient.DownloadString

于 2009-09-20T07:48:12.160 に答える