2012-12-22 95 views
0

可能重复:
Parse JSON in C#.NET类需要反序列化JSON字符串

我试图从反序列化在ASP.NET中openlibrary.org JSON字符串(4.5 )使用JSON.NET的Web应用程序。

我的目标是能够从单个.Net对象读取下面的5个属性。

example JSON 我是:

{"ISBN:0201558025": 
    { 
     "bib_key": "ISBN:0201558025", 
     "preview": "noview", 
     "thumbnail_url": "http://covers.openlibrary.org/b/id/135182-S.jpg", 
     "preview_url": "http://openlibrary.org/books/OL1429049M/Concrete_mathematics", 
     "info_url": "http://openlibrary.org/books/OL1429049M/Concrete_mathematics" 
    } 
} 

我可以得到它没有第一线工作得很好,但我有点失去试图找出我应该怎么构建我的班。

我是JSON的新手,几年之后还没有在C#/ VB.NET中玩过,所以很迷茫。

更新

我有以下代码:

Dim url = "http://openlibrary.org/api/books?bibkeys=ISBN:0201558025&format=json" 
Dim webClient = New System.Net.WebClient 
Dim json = webClient.DownloadString(url) 

Dim book As Book = JsonConvert.DeserializeObject(Of Book)(json) 

和类图书:

Public Class Book 
    Public bib_key As String 
    Public preview As String 
    Public preview_url As String 
    Public info_url As String 
End Class 

然而,书变成了空。

回答

1

有一个叫json2csharp网站 - 生成JSON的C#类:

public class RootObject 
{ 
    public string bib_key { get; set; } 
    public string preview { get; set; } 
    public string thumbnail_url { get; set; } 
    public string preview_url { get; set; } 
    public string info_url { get; set; } 
} 

JSON格式是有点过,去掉{ “ISBN:0201558025”:既然你有ISBN为bib_key

+0

谢谢,我曾试过,但不知道有关的国际标准书号位。我现在面临的问题是,我的图书对象没有收到详细信息,这导致我认为我可能错过了一堂课。 – ataru

1

我认为它可以反序列化的词典。

new System.Web.Script.Serialization.JavaScriptSerializer().Deserialize<Dictionary<string, BookInfoClass>>(jsonString);