0

Windows Phone での Json 解析のサンプルを作成しています。応答文字列を解析するために、Json.Net ( json.codeplex.com/releases/view/78509 ) ライブラリを使用しています。しかし、解析中に例外が発生しています。例外は、「JSON 配列を 'System.String 型に逆シリアル化できません」です。以下にコードを掲載しています。

私が得ているJSON応答

[{"runtime": ["194 min"], "rating": 7.6, "genres": ["ドラマ", "ロマンス"], "rated": "PG_13", "language": ["English", "フランス語"、"ドイツ語"、"スウェーデン語"、"イタリア語"、"ロシア語"]、"タイトル": "タイタニック"、"filming_locations": "サンタクラリタ、カリフォルニア、USA"、"ポスター": " http:/ /ia.media-imdb.com/images/M/MV5BMjExNzM0NDM0N15BMl5BanBnXkFtZTcwMzkxOTUwNw@@._V1._SY317_CR0,0,214,317_.jpg ", "imdb_url": " http://www.imdb.com/title/tt0120338/"、"writers": ["James Cameron"]、"imdb_id": "tt0120338"、"directors": ["James Cameron"]、"rating_count": 426376、"actors": ["Leonardo DiCaprio"、"Kateウィンスレット」、「ビリー・ゼイン」、「キャシー・ベイツ」、「フランシス・フィッシャー」、「グロリア・スチュアート」、「ビル・パクストン」、「バーナード・ヒル」、「デビッド・ワーナー」、「ビクター・ガーバー」、「ジョナサン・ハイド」、「スージー」 Amis", "Lewis Abernathy", "Nicholas Cascone", "Anatoly M. Sagalevitch"], "plot_simple": "17 歳の貴族が、母親から金持ちの請求者と結婚することを期待され、恋に落ちます。豪華で不運な RMS タイタニック号に乗った親切だが貧しい芸術家.", "年":1997、「国」: [「アメリカ」]、「タイプ」: 「M」、「リリース日」: 19980403、「また既知の名前」: [「3D のタイタニック」]}]

そして、解析コードは

private void ParseResult(string input)
{
   var root =  Newtonsoft.Json.JsonConvert.DeserializeObject<RootObject1[]>(input);// here getting the exception "Cannot deserialize JSON array into type 'System.String"
}

オブジェクトクラスは

 public class RootObject1
{
    public string runtime { get; set; }
    public int rating { get; set; }
    public string rated { get; set; }
    public string title { get; set; }
    public string poster { get; set; }
    public string imdb_url { get; set; }
    public string writers { get; set; }
    public string imdb_id { get; set; }

}

ありがとう。

4

1 に答える 1

2

さて、あなたのオブジェクトは入力に対応していません。「runtime」および「writers」フィールドは文字列の配列であり、rating は整数値ではないため、正しいオブジェクトは次のようになります。

    public class RootObject1
    {
        public string[] runtime { get; set; }
        public float rating { get; set; }
        public string rated { get; set; }
        public string title { get; set; }
        public string poster { get; set; }
        public string imdb_url { get; set; }
        public string[] writers { get; set; }
        public string imdb_id { get; set; }
    }
于 2013-05-16T08:36:08.840 に答える