2016-08-03 19 views
0

これをデシリアライズしようとしていますが、このエラーが発生し続けます。linkJSON.NET文字列の読み込み中にエラーが発生しました。予期しないトークン:StartObject。 Path 'responseData'、

文字列を読み取る際にエラーが発生しました。予期しないトークン:StartObject。パス 'responseData'。私はGoogleで検索したものから

、問題は、私はにデシリアライズしようとしている私のオブジェクトの設定のようです。私のクラスは以下の通りです:

public class FeedSearchResult 
{ 
    [JsonProperty("responseData")] 
    public String ResponseData { get; set; } 

    [JsonProperty("query")] 
    public String Query { get; set; } 

    [JsonProperty("entries")] 
    public string[] Entries { get; set; } 

    [JsonProperty("responseDetails")] 
    public object ResponseDetails { get; set; } 

    [JsonProperty("responseStatus")] 
    public String ResponseStatsu { get; set; } 
} 

public class ResultItem 
{ 
    [JsonProperty("title")] 
    public String Title { get; set; } 

    [JsonProperty("url")] 
    public String Url { get; set; } 

    [JsonProperty("link")] 
    public String Link { get; set; } 
} 

私のクラスで何が間違っていますか?どんな助けでも大歓迎です。

+1

あなたのデータモデルは、実際に返されるJSONと一致していませんが。 'responseData'はオブジェクトですが、代わりに文字列として持っています。修正されたデータモデルを取得するには、JSONをhttp://json2csharp.com/にアップロードしてください。 – dbc

+0

Dang。正直言って最初のようなツールを探していたはずです。ありがとう、たくさんの男。 –

答えて

1

データモデルには2つのレベルの入れ子がありますが、返されるJSONには3つのレベルがあります。あなたがhttps://jsonformatter.curiousconcept.com/を使用してフォーマットされたJSONを見ればあなたが表示されます。特に

{ 
    "responseData":{ 
     "query":"Official Google Blogs", 
     "entries":[ 
     { 
      "url":"https://googleblog.blogspot.com/feeds/posts/default", 
      "title":"\u003cb\u003eOfficial Google Blog\u003c/b\u003e", 
      "contentSnippet":"\u003cb\u003eOfficial\u003c/b\u003e weblog, with news of new products, events and glimpses of life inside \u003cbr\u003e\n\u003cb\u003eGoogle\u003c/b\u003e.", 
      "link":"https://googleblog.blogspot.com/" 
     }, 

のデータモデルは、それが含まれているオブジェクトである必要がStringとしてresponseDataを持っています。これが例外の具体的な原因です。あなたはhttp://json2csharp.com/にJSONをアップロードした場合

することは、あなたは、このJSONデシリアライズするために使用することができ、次のデータモデル、取得します:

public class ResultItem 
{ 
    public string url { get; set; } 
    public string title { get; set; } 
    public string contentSnippet { get; set; } 
    public string link { get; set; } 
} 

public class ResponseData 
{ 
    public string query { get; set; } 
    public List<ResultItem> entries { get; set; } 
} 

public class RootObject 
{ 
    public ResponseData responseData { get; set; } 
    //Omitted since type is unclear. 
    //public object responseDetails { get; set; } 
    public int responseStatus { get; set; } 
} 
関連する問題