【问题标题】:How do I use Quicktype Json C# generated classes to Deserialize a JSON file如何使用 Quicktype Json C# 生成的类来反序列化 JSON 文件
【发布时间】:2025-12-10 01:10:02
【问题描述】:

我有一个非常大的 Json 文件(无法共享) 我使用https://quicktype.io/csharp/ 从这个 json 文件生成一个 C# 类

它给了我一个看起来像这样的类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

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

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

    public partial class Tem
    {
        [JsonProperty("Cal")]
        public Cal Cal_ { get; set; }
    }

    public partial class Cal
    {
        [JsonProperty("Cam")]
        public Camera[] Cam_ { get; set; }

        [JsonProperty("Dis")]
        public Dis[] Dis_ { get; set; }

        [JsonProperty("Eye")]
        public Eye[] Eye_ { get; set; }

        [JsonProperty("Ine")]
        public Ine[] Ine_ { get; set; }

        [JsonProperty("Metadata")]
        public Metadata Metadata_ { get; set; }

        [JsonProperty("Tem")]
        public Tem Tem_ { get; set; }
    }
    //...There are a lot more
}

然后它有一些内置的内部类

internal static class Converter
{
    public static readonly JsonSerializerSettings Settings = new JsonSerializerSettings
    {
        MetadataPropertyHandling = MetadataPropertyHandling.Ignore,
        DateParseHandling = DateParseHandling.None,
        Converters =
        {
            ShutterConverter.Singleton,
            AssignedEyeConverter.Singleton,
            LocationConverter.Singleton,
            new IsoDateTimeConverter { DateTimeStyles = DateTimeStyles.AssumeUniversal }
        },
    };
}

不知道如何处理这些

我试图用这种方式反序列化它,但它不起作用,所有的值都是空的

 using (StreamReader r = new StreamReader(file path))
 {
         string json = r.ReadToEnd();

         QuickType.Cal test = Newtonsoft.Json.JsonConvert.DeserializeObject<QuickType.Cal>(json);

 }

我知道文件路径是正确的,并且json字符串中包含json文件。但我不知道我应该如何从 Json.net 转换为这个 Json 生成的类

谢谢,

【问题讨论】:

  • Json2csharp.com 工作吗?
  • 这没有帮助。我仍然为类中的所有数据获取 Null

标签: c# json windows quicktype


【解决方案1】:

正如上面 Jeremy Thompson 所建议的,我切换到 Json2csharp.com,因为格式更简单

然后我用Cal.RootObject test = Newtonsoft.Json.JsonConvert.DeserializeObject&lt;Cal.RootObject&gt;(json);解析

【讨论】: