C# 使用Newtonsoft.Json反序列化C“对象时出错:转换值时出错”;xxx“;输入';System.String[]和#x27;

C# 使用Newtonsoft.Json反序列化C“对象时出错:转换值时出错”;xxx“;输入';System.String[]和#x27;,c#,json,json.net,C#,Json,Json.net,我刚刚使用Newtonsoft.Json,在将Json对象绑定到C#对象时遇到了一个问题 以下是我的对象定义: namespace pg.Factories { using System; using System.Globalization; using Newtonsoft.Json; using Newtonsoft.Json.Converters; public partial class Survey { [JsonPr

我刚刚使用Newtonsoft.Json,在将Json对象绑定到C#对象时遇到了一个问题

以下是我的对象定义:

namespace pg.Factories
{
    using System;

    using System.Globalization;
    using Newtonsoft.Json;
    using Newtonsoft.Json.Converters;
    public partial class Survey
    {
        [JsonProperty("id")]
        public string Id { get; set; }

        [JsonProperty("title")]
        public string Title { get; set; }

        [JsonProperty("created_at")]
        public DateTimeOffset CreatedAt { get; set; }

        [JsonProperty("updated_at")]
        public DateTimeOffset UpdatedAt { get; set; }

        [JsonProperty("collectors")]
        public string[][] Collectors { get; set; }

        [JsonProperty("pages")]
        public string[][] Pages { get; set; }

        [JsonProperty("options")]
        public Options Options { get; set; }

        [JsonProperty("links")]
        public Links Links { get; set; }

        [JsonProperty("meta")]
        public Meta Meta { get; set; }
    }

    public partial class Options
    {
        [JsonProperty("display_progress_bar")]
        public bool DisplayProgressBar { get; set; }

        [JsonProperty("display_title")]
        public bool DisplayTitle { get; set; }

        [JsonProperty("footer_text")]
        public string FooterText { get; set; }

        [JsonProperty("language")]
        public string Language { get; set; }

        [JsonProperty("display_logo")]
        public bool DisplayLogo { get; set; }

        [JsonProperty("display_pages_numbering")]
        public bool DisplayPagesNumbering { get; set; }

        [JsonProperty("display_questions_numbering")]
        public bool DisplayQuestionsNumbering { get; set; }

        [JsonProperty("correction_type")]
        public string CorrectionType { get; set; }

        [JsonProperty("timer")]
        public Timer Timer { get; set; }
    }

    public partial class Timer
    {
        [JsonProperty("hours")]
        public long Hours { get; set; }

        [JsonProperty("minutes")]
        public long Minutes { get; set; }

        [JsonProperty("seconds")]
        public long Seconds { get; set; }
    }

    public partial class Links
    {
        [JsonProperty("first")]
        public string First { get; set; }

        [JsonProperty("last")]
        public string Last { get; set; }

        [JsonProperty("prev")]
        public string Prev { get; set; }

        [JsonProperty("next")]
        public string Next { get; set; }
    }

    public partial class Meta
    {
        [JsonProperty("current_page")]
        public long CurrentPage { get; set; }

        [JsonProperty("from")]
        public long From { get; set; }

        [JsonProperty("last_page")]
        public long LastPage { get; set; }

        [JsonProperty("path")]
        public string Path { get; set; }

        [JsonProperty("per_page")]
        public long PerPage { get; set; }

        [JsonProperty("to")]
        public long To { get; set; }

        [JsonProperty("total")]
        public long Total { get; set; }
    }
    public partial class Survey
    {
        public static Survey FromJson(string json) => JsonConvert.DeserializeObject<Survey>(json, pg.Factories.Converter.Settings);
    }

    public static class Serialize
    {
        public static string ToJson(this Survey self) => JsonConvert.SerializeObject(self, pg.Factories.Converter.Settings);
    }

    internal static class Converter
    {
        public static readonly JsonSerializerSettings Settings = new JsonSerializerSettings
        {
            MetadataPropertyHandling = MetadataPropertyHandling.Ignore,
            DateParseHandling = DateParseHandling.None,
            Converters = {
                new IsoDateTimeConverter { DateTimeStyles = DateTimeStyles.AssumeUniversal }
            },
        };
    }
}
获取JSON字符串没有问题,但在创建C#对象时,我面临以下问题:

Unhandled exception. Newtonsoft.Json.JsonSerializationException: Error converting value "5dd7c09624810c6cfe20d3f9" to type 'System.String[]'. Path 'data[0].collectors[0]'
你有什么想法吗


非常感谢

在JSON字符串中,属性“收集器”是字符串的一维数组:

"collectors":["5dd7c09624810c6cfe20d3f9"]
但在对象定义中,您已使用[]将其声明为二维:

public string[][] Collectors { get; set; }
该错误表示无法将单个字符串(
“5dd7c09624810c6cfe20d3f9”
)转换为所需的字符串数组。您的JSON应该看起来像

"collectors":[["5dd7c09624810c6cfe20d3f9"], ["5ee...", "5ff..."]]
(或至少

"collectors":[["5dd7c09624810c6cfe20d3f9"]]
),否则属性定义应为

public string[] Collectors { get; set; }
顺便说一句,看起来你的“页面”属性也会有同样的问题

"collectors":[["5dd7c09624810c6cfe20d3f9"], ["5ee...", "5ff..."]]
"collectors":[["5dd7c09624810c6cfe20d3f9"]]
public string[] Collectors { get; set; }