c# - 简化 JSON 对象反序列化

标签 c# json serialization json.net simplify

我正在使用加密货币制作一些应用程序,但我在某处找到的 API 有问题。

我需要一些技巧来简化我的类的序列化。

public class Data
{
    public SUB SUB { get; set; }
    public USC USC { get; set; }
    public DUX DUX { get; set; }
    public XPS XPS { get; set; }
    public EQT EQT { get; set; }
    ... //and a lot more of same classes

}

Here is that REST page with JSON

我用过http://json2csharp.com/类生成器 - 但之后我留下了数百个看起来相同的类 - 只有其他名称。我尝试过替换它,但总是留下空值。

现在我同意了:-

    public class Data
    {
        public string Id { get; set; }
        public string Url { get; set; }
        public string ImageUrl { get; set; }
        public string Name { get; set; }
    ...
    }
    public class RootObject
    {
        public string BaseLinkUrl { get; set; }
        public List<List<Data>> Data { get; set; }
        public int Type { get; set; }
    }


    public static async Task<T> DeserializeStringToObject<T>(string url)
    {
        return JsonConvert
            .DeserializeObject<T>(await GetStreamFromUr(url));
    }

或者也许我应该使用不同的解串器?或者只是在每次迭代 for 循环时检查一个对象?

最佳答案

我使用 RestSharp 做了一个小测试,效果很好

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            var client = new RestClient("https://www.cryptocompare.com/api");

            var response = client.Execute<DataContainer>(new RestRequest("/data/coinlist"));

            var data = response.Data;        }
    }

    public class DataContainer
    {
        public string Message { get; set; }
        public Dictionary<string, DataItem> Data { get; set; }
    }

    public class DataItem
    {
        public string Id { get; set; }
        public string Url { get; set; }
        public string ImageUrl { get; set; }
        public string Name { get; set; }

    }
}

基本上,我更改了字典类型的数据属性。这样它将序列化字典中的所有数据,您可以像这样使用

data.Data["SUB"].Id

关于c# - 简化 JSON 对象反序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45289505/

相关文章:

c# - SyndicationFeed 将 namespace 前缀从 a10 更改为 atom

javascript - 我如何在 React 中循环遍历 JSON 对象

javascript - AngularJS 包装从服务器返回的 JSON 数据

c++ - 静态成员和 boost 序列化

java - 如何恢复 Hibernate 中的 transient 字段,如 readResolve() 以进行 hibernate 序列化?

c# - 如何在 C# 中重用 "var"声明的变量

c# - MSI、UAC 和未识别的发布者。如何更改身份不明的发布者?

c# - 由于错误而无法删除临时文件

javascript - HighCharts中如何返回json数据?

java - 在java中读取对象错误java.io.StreamCorruptedException : invalid type code: AC