C# Webrequest json 对象

C# Webrequest json to object

我正在尝试将此 JSON 转换为 class 的对象,但出现错误:应为“:”或“{”。

这是JSON:

{"data":[{"id":"https:\/\/api.cognitive.microsoft.com\/api\/v7\/#WebPages.0", 
"name": "Epic Games' Fortnite",
"url": "https:\/\/www.epicgames.com\/fortnite\/", 
"about": [{"name": "Fortnite"}]]}

这里是 classes:

class WebResult
{
    public string id { get; set; }
    public string name { get; set; }
    public string url { get; set; }
    public string[] about { get; set; }
}

class Results
{
    public List<WebResult> data { get; set; }
}

这里出现错误:

Results result = new JavaScriptSerializer().Deserialize<Results>(json);

您必须关闭 data table 中的第一个对象。如错误消息中所述,关闭 about table.

后缺少关闭 }
{
    "data":
    [
        {
            "id":"https://api.cognitive.microsoft.com/api/v7/#WebPages.0",
            "name":"Epic Games' Fortnite",
            "url":"https://www.epicgames.com/fortnite/",
            "about":[ { "name":"Fortnite" } ]
        }  <-- missing
    ]
}

您可以使用在线 json 解析器 (like this one) 快速解决语法错误。

您的 C# 模型似乎对此无效 json。要从 json 中创建 C# 类,请查看 quicktype.

您的json无效。应该是:

var json = {"data":[{"id":"https:\/\/api.cognitive.microsoft.com\/api\/v7\/#WebPages.0", 
"name": "Epic Games' Fortnite",
"url": "https:\/\/www.epicgames.com\/fortnite\/", 
"about": [{"name": "Fortnite"}]}]}

另外你的 class 应该有一个关于 class:

public class Results
{
    public List<WebResult> Data { get; set; }
}
public class WebResult
{
    public string Id { get; set; }
    public string Name { get; set; }
    public string Url { get; set; }
    public List<About> About { get; set; }
}
public class About
{
    public string Name { get; set; }
}

要反序列化,您可以执行以下操作:

var deserializer = new JavaScriptSerializer();
var result = deserializer.Deserialize<Results>(json);