反序列化JSON字符串所需的.NET类

本文关键字:NET JSON 字符串 反序列化 | 更新日期: 2023-09-27 17:49:19

可能重复:
在C#中解析JSON

我正在尝试使用JSON.NET.在ASP.NET(4.5(web应用程序中反序列化openlibrary.org中的JSON字符串

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

示例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

然而,这本书却是空的。

反序列化JSON字符串所需的.NET类

有一个名为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

尝试使用JSON.Net

JavaScriptSerializer类

DataContractSerializer类

我认为它可以反序列化为Dictionary。

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