gpt4 book ai didi

c# - 如果我只使用 JSON.Net,我可以安全地删除在我的 C# 模型类中指定后缀的字段和属性吗

转载 作者:太空宇宙 更新时间:2023-11-03 13:17:25 25 4
gpt4 key购买 nike

我有一个 C# 应用程序。

我有一个从 xsd 生成的类。该类如下所示

public class Transaction
{
public bool amountSpecified {get; set;}

public double amount {get; set;}
}

如果您在上面的类中注意到,除了属性 amount 之外,生成器还生成了一个名为 amountSpecified 的属性。

我知道所有不可为空的字段/属性都需要后缀为“Specified”的属性,因为这是[文章][1]中提到的 XML Serializer 的要求。

但是我只使用 JSON 序列化和反序列化(使用 JSON.NET),我还需要那些带有“Specified”后缀的字段吗?如果我删除它们,我是否应该使我的字段/属性可以为空,如下所示?

double? amount;

我的问题是所有这些都是由 JSON.Net 内部处理的吗?我能否安全地删除后缀为“specified”的所有字段并且不使我的字段可为空?

如果有人能指出正确的方向,我将非常高兴。提前致谢。

最佳答案

作为discussed since 2008 ,他们修复了它以支持可空类型。我也试过这段代码

using System;
using Newtonsoft.Json;

namespace TestJson
{
class Test {
public double? amount { get; set; }
}

class MainClass
{
public static void Main(string[] args)
{
string jsonStr = JsonConvert.SerializeObject(new Test());
string jsonStr2 = JsonConvert.SerializeObject(new Test { amount = 5 } );
Console.WriteLine(jsonStr);
Console.WriteLine(jsonStr2);
Console.ReadLine();
}
}
}

它工作得很好:

{"amount":null}
{"amount":5.0}

并且不需要Specified后缀的属性。

关于c# - 如果我只使用 JSON.Net,我可以安全地删除在我的 C# 模型类中指定后缀的字段和属性吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25607237/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com