JSON.NET获取特定值

时间:2013-10-07 11:19:33

标签: c# wpf json parsing json.net

我是JSON.NET的新手,我试图从gooogle book api获取一些信息。  我向书api发送请求并得到这样的回复:

>     {
 "kind": "books#volumes",
 "totalItems": 1,
 "items": [
  {
   "kind": "books#volume",
   "id": "cqBNpxozvxsC",
   "etag": "M3um0RHW0ak",
   "selfLink": "https://www.googleapis.com/books/v1/volumes/cqBNpxozvxsC",
   "volumeInfo": {
    "title": "Rothfuss,Name d.Windes",
    "authors": [
     "Patrick Rothfuss"
    ],
    "publisher": "Klett-Cotta",
    "publishedDate": "2010",
    "industryIdentifiers": [
     {
      "type": "ISBN_10",
      "identifier": "3608938788"
     },
     {
      "type": "ISBN_13",
      "identifier": "9783608938784"
     }
    ],
    "pageCount": 876,
    "printType": "BOOK",
    "contentVersion": "0.0.1.0.preview.1",
    "imageLinks": {
     "smallThumbnail": "http://bks9.books.google.de/books?id=cqBNpxozvxsC&printsec=frontcover&img=1&zoom=5&edge=curl&source=gbs_api",
     "thumbnail": "http://bks9.books.google.de/books?id=cqBNpxozvxsC&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api"
    },
    "language": "de",
    "previewLink": "http://books.google.de/books?id=cqBNpxozvxsC&printsec=frontcover&dq=isbn:9783608938784&hl=&cd=1&source=gbs_api",
    "infoLink": "http://books.google.de/books?id=cqBNpxozvxsC&dq=isbn:9783608938784&hl=&source=gbs_api",
    "canonicalVolumeLink": "http://books.google.de/books/about/Rothfuss_Name_d_Windes.html?hl=&id=cqBNpxozvxsC"
   },
   "saleInfo": {
    "country": "DE",
    "saleability": "NOT_FOR_SALE",
    "isEbook": false
   },
   "accessInfo": {
    "country": "DE",
    "viewability": "PARTIAL",
    "embeddable": true,
    "publicDomain": false,
    "textToSpeechPermission": "ALLOWED",
    "epub": {
     "isAvailable": false
    },
    "pdf": {
     "isAvailable": false
    },
    "webReaderLink": "http://books.google.de/books/reader?id=cqBNpxozvxsC&hl=&printsec=frontcover&output=reader&source=gbs_api",
    "accessViewStatus": "SAMPLE"
   }
  }
 ]
}

现在我试着像这样使用json.net:JObject responeObject = JObject.Parse(responsestring); JToken items = responeObject["items"]; JToken item= items[0]; string booktitle; booktitle=item["title"].Value<String>();

我得到了一个项目...但是我无法获得音量信息,例如标题......

我的错误在哪里?

汉斯

1 个答案:

答案 0 :(得分:1)

使用此代码

 public class SampleResponse
{

    [JsonProperty("kind")]
    public string Kind { get; set; }

    [JsonProperty("totalItems")]
    public int TotalItems { get; set; }

    [JsonProperty("items")]
    public Item[] Items { get; set; }
}

public class AccessInfo
{

    [JsonProperty("country")]
    public string Country { get; set; }

    [JsonProperty("viewability")]
    public string Viewability { get; set; }

    [JsonProperty("embeddable")]
    public bool Embeddable { get; set; }

    [JsonProperty("publicDomain")]
    public bool PublicDomain { get; set; }

    [JsonProperty("textToSpeechPermission")]
    public string TextToSpeechPermission { get; set; }

    [JsonProperty("epub")]
    public Epub Epub { get; set; }

    [JsonProperty("pdf")]
    public Pdf Pdf { get; set; }

    [JsonProperty("webReaderLink")]
    public string WebReaderLink { get; set; }

    [JsonProperty("accessViewStatus")]
    public string AccessViewStatus { get; set; }
}

 public class Epub
{

    [JsonProperty("isAvailable")]
    public bool IsAvailable { get; set; }
}

 public class ImageLinks
{

    [JsonProperty("smallThumbnail")]
    public string SmallThumbnail { get; set; }

    [JsonProperty("thumbnail")]
    public string Thumbnail { get; set; }
}

public class IndustryIdentifier
{

    [JsonProperty("type")]
    public string Type { get; set; }

    [JsonProperty("identifier")]
    public string Identifier { get; set; }
}


public class Item
{

    [JsonProperty("kind")]
    public string Kind { get; set; }

    [JsonProperty("id")]
    public string Id { get; set; }

    [JsonProperty("etag")]
    public string Etag { get; set; }

    [JsonProperty("selfLink")]
    public string SelfLink { get; set; }

    [JsonProperty("volumeInfo")]
    public VolumeInfo VolumeInfo { get; set; }

    [JsonProperty("saleInfo")]
    public SaleInfo SaleInfo { get; set; }

    [JsonProperty("accessInfo")]
    public AccessInfo AccessInfo { get; set; }
}

 public class Pdf
{

    [JsonProperty("isAvailable")]
    public bool IsAvailable { get; set; }
}

  public class SaleInfo
{

    [JsonProperty("country")]
    public string Country { get; set; }

    [JsonProperty("saleability")]
    public string Saleability { get; set; }

    [JsonProperty("isEbook")]
    public bool IsEbook { get; set; }
}

  public class VolumeInfo
{

    [JsonProperty("title")]
    public string Title { get; set; }

    [JsonProperty("authors")]
    public string[] Authors { get; set; }

    [JsonProperty("publisher")]
    public string Publisher { get; set; }

    [JsonProperty("publishedDate")]
    public string PublishedDate { get; set; }

    [JsonProperty("industryIdentifiers")]
    public IndustryIdentifier[] IndustryIdentifiers { get; set; }

    [JsonProperty("pageCount")]
    public int PageCount { get; set; }

    [JsonProperty("printType")]
    public string PrintType { get; set; }

    [JsonProperty("contentVersion")]
    public string ContentVersion { get; set; }

    [JsonProperty("imageLinks")]
    public ImageLinks ImageLinks { get; set; }

    [JsonProperty("language")]
    public string Language { get; set; }

    [JsonProperty("previewLink")]
    public string PreviewLink { get; set; }

    [JsonProperty("infoLink")]
    public string InfoLink { get; set; }

    [JsonProperty("canonicalVolumeLink")]
    public string CanonicalVolumeLink { get; set; }
}

反序列化

var obj = JsonConvert.DeserializeObject<SampleResponse>(Your_String);