【问题标题】:How to parse JSON-C in .net如何在 .net 中解析 JSON-C
【发布时间】:2013-06-28 03:35:51
【问题描述】:

我不能使用 Youtube API,因为 WP 不支持它们,所以我选择只使用 JSON 响应。好像 Youtube 已经将响应类型更改为 JSON-C,我该如何解析?

https://www.googleapis.com/youtube/v3/search?part=snippet&order=relevance&q=lil+b&key=AIzaSyACjwJrIBICZxPb1x3JRq-FQ8iaei7LqXA&alt=json

我试过 Newtonsoft JSON 但它也不支持它,有什么建议吗?谢谢!

【问题讨论】:

  • JSON-C 就是 JSON。任何 JSON 解析器都应该可以正常工作。
  • 这是我得到的错误:无法将当前 JSON 对象(例如 {"name":"value"}) 反序列化为类型“Youtube_Metro.SearchResultsClass+RootObject[]”,因为该类型需要 JSON数组(例如 [1,2,3])正确反序列化。要修复此错误,要么将 JSON 更改为 JSON 数组(例如 [1,2,3]),要么将反序列化类型更改为普通的 .NET 类型(例如,不是像整数这样的原始类型,而不是像这样的集合类型可以从 JSON 对象反序列化的数组或 List)。 JsonObjectAttribute 也可以添加到类型中以强制它从 JSON 对象反序列化。

标签: c# json serialization deserialization json-deserialization


【解决方案1】:

你能试试下面的代码吗?我已将 json 数据保存为文本文件。使用 jsonCsharp 您可以生成模型类。 http://json2csharp.com/

var json = System.IO.File.ReadAllText(@"C:\json.txt"); //get json data
var result = JsonConvert.DeserializeObject<RootObject>(json);

public class PageInfo
{
    public int totalResults { get; set; }
    public int resultsPerPage { get; set; }
}

public class Id
{
    public string kind { get; set; }
    public string channelId { get; set; }
    public string videoId { get; set; }
}

public class Default
{
    public string url { get; set; }
}

public class Medium
{
    public string url { get; set; }
}

public class High
{
    public string url { get; set; }
}

public class Thumbnails
{
    public Default @default { get; set; }
    public Medium medium { get; set; }
    public High high { get; set; }
}

public class Snippet
{
    public string publishedAt { get; set; }
    public string channelId { get; set; }
    public string title { get; set; }
    public string description { get; set; }
    public Thumbnails thumbnails { get; set; }
    public string channelTitle { get; set; }
}

public class Item
{
    public string kind { get; set; }
    public string etag { get; set; }
    public Id id { get; set; }
    public Snippet snippet { get; set; }
}

public class RootObject
{
    public string kind { get; set; }
    public string etag { get; set; }
    public PageInfo pageInfo { get; set; }
    public string nextPageToken { get; set; }
    public List<Item> items { get; set; }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-31
    • 1970-01-01
    • 2012-12-29
    • 1970-01-01
    • 2016-10-15
    • 2013-01-30
    相关资源
    最近更新 更多