相关疑难解决方法(0)

JSON.net:如何在不使用默认构造函数的情况下反序列化?

我有一个具有默认构造函数的类,也是一个带有一组参数的重载构造函数.这些参数与对象上的字段匹配,并在构造时分配.此时我需要默认构造函数用于其他目的,所以我想保留它,如果可以的话.

我的问题:如果我删除默认构造函数并传入JSON字符串,该对象将正确反序列化并传入构造函数参数而不会出现任何问题.我最终以我期望的方式取回填充的对象.但是,只要我将默认构造函数添加到对象中,当我调用JsonConvert.DeserializeObject<Result>(jsontext)属性时就不再填充了.

此时我尝试添加new JsonSerializerSettings(){CheckAdditionalContent = true}反序列化调用.那什么都没做.

另一个说明.除了参数以小写字母开头之外,构造函数参数确实与字段的名称完全匹配.我不认为这很重要因为,就像我提到的,反序列化工作正常,没有默认构造函数.

这是我的构造函数的示例:

public Result() { }

public Result(int? code, string format, Dictionary<string, string> details = null)
{
    Code = code ?? ERROR_CODE;
    Format = format;

    if (details == null)
        Details = new Dictionary<string, string>();
    else
        Details = details;
}
Run Code Online (Sandbox Code Playgroud)

c# json json.net

117
推荐指数
3
解决办法
9万
查看次数

使用 System.Text.Json 反序列化匿名类型

我正在为 .NET Core 3.x 更新一些应用程序,作为其中的一部分,我正在尝试Json.NET从新System.Text.Json类迁移。使用 Json.NET,我可以反序列化一个匿名类型,如下所示:

var token = JsonConvert.DeserializeAnonymousType(jsonStr, new { token = "" }).token;
Run Code Online (Sandbox Code Playgroud)

新命名空间中是否有等效的方法?

c# json .net-core .net-core-3.1 system.text.json

17
推荐指数
1
解决办法
5365
查看次数

使用 System.Text.Json 将 JSON 反序列化为对象

我尝试使用System.Text.Json.Serialization命名空间将 JSON 文件中的文本反序列化为名为 Note 的对象,然后访问其属性。稍后的目的是读入多个 Note 对象,然后存储在列表中。

除了 DOTNET 文档https://learn.microsoft.com/en-us/dotnet/standard/serialization/system-text-json-how-之外,似乎没有很多关于使用此命名空间的示例

这是我根据给出的例子进行的尝试。这会引发如下所示的错误,如果您知道我做错了什么,请告诉我,谢谢。

class Note
{
    public DateTime currentDate { get; set; }
    public string summary { get; set; }
    public Note(DateTime _date, string _sum)
    {
        currentDate = _date;
        summary = _sum;
    }
}

class Program
{
    static void Main(string[] args)
    {
        //Write json data
        string path = @"D:\Documents\Projects\Visual Projects\Notes Data\ThingsDone.json";

        DateTime date = DateTime.Now;
        string givenNote = "summary text";

        Note completeNote = new Note(date, givenNote);

        string serialString …
Run Code Online (Sandbox Code Playgroud)

c# json json-deserialization system.text.json

9
推荐指数
1
解决办法
2万
查看次数