C# 我创建的类是否正确?

C# 我创建的类是否正确?,c#,json,class,json.net,C#,Json,Class,Json.net,我正在创建一个JSON文件来存储模板细节。每个模板有几个页面,每个页面有几个区域和协调 样板 下面是模板类 class List<Template> { public string tempName { get; set; } public List<pageNumber> pages { get; set; } public List<pageDetails> pagesDetails { get; set; } publi

我正在创建一个JSON文件来存储模板细节。每个模板有几个页面,每个页面有几个区域和协调

样板 下面是模板类

class List<Template>
{
    public string tempName { get; set; }
    public List<pageNumber> pages { get; set; }
    public List<pageDetails> pagesDetails { get; set; }

    public class pageNumber
    {

    }

    public class pageDetails
    {
        public List<string> areaName { get; set; }
        public List<string> Coordinate { get; set; }
    }
}
您可以使用非附属的,只是一个风扇来快速地将示例JSON转换为类

对于您的输入,输出的坐标输入错误是固定的:

namespace QuickType
{
    using System;
    using System.Collections.Generic;

    using System.Globalization;
    using Newtonsoft.Json;
    using Newtonsoft.Json.Converters;

    public partial class ImageData
    {
        [JsonProperty("Template_Name")]
        public string TemplateName { get; set; }

        [JsonProperty("Page_Number")]
        public List<PageNumber> PageNumber { get; set; }
    }

    public partial class PageNumber
    {
        [JsonProperty("Page_Details")]
        public List<PageDetail> PageDetails { get; set; }
    }

    public partial class PageDetail
    {
        [JsonProperty("areaName")]
        public string AreaName { get; set; }

        [JsonProperty("coordinate")]
        public string Coordinate { get; set; }
    }
}

您的JSON不是非常有效的尾随逗号,属性名称应该在它们的周围有双引号,但是像NewtsonSoft.JSON这样的容错反序列化器会让您失望

但真正的问题是,与JSON相比,您的C类结构没有什么意义,您可以通过测试来证明自己。属性名称大多与JSON中的名称不匹配,并且您对列表和对象等内容感到非常困惑

这一结构将发挥作用:

public class PageDetail
{
    public string areaName { get; set; }
    public string coordiante { get; set; }
    public string coordinate { get; set; }
}

public class PageNumber
{
    public List<PageDetail> Page_Details { get; set; }
}

public class Template
{
    public string Template_Name { get; set; }
    public List<PageNumber> Page_Number { get; set; }
}
然后你就可以写了

List<Template> data = JsonConvert.DeserializeObject<List<Template>>(json);
假设JSON包含从文件读取的数据,则将JSON文本转换为C变量

使用静态字符串演示:


对转换站点稍加调整即可获得积分

您尝试时发生了什么?我感觉pageNumber遗漏了什么。我做得对吗?我们怎么知道?代码做了它应该做的吗?你的问题是什么?你想知道你是否能够使用你的类来反序列化示例json吗?很酷的东西,比Visual Studio的“将json粘贴为类”功能要好得多。谢谢分享anks AKX,但是现在我在为它赋值时遇到了一些麻烦。
public class PageDetail
{
    public string areaName { get; set; }
    public string coordiante { get; set; }
    public string coordinate { get; set; }
}

public class PageNumber
{
    public List<PageDetail> Page_Details { get; set; }
}

public class Template
{
    public string Template_Name { get; set; }
    public List<PageNumber> Page_Number { get; set; }
}
List<Template> data = JsonConvert.DeserializeObject<List<Template>>(json);