我正在从.NET Core 3.0应用程序中的 2.3.0 :001 > require 'watir-webdriver'
/home/user/.rvm/gems/ruby-2.3.0/gems/bootsnap-1.3.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:21:in `require': `require "watir-webdriver"` is deprecated. Please, use `require "watir"`.
=> true
2.3.0 :002 > browser = Watir::Browser.new
NoMethodError: undefined method `[]' for nil:NilClass
from (irb):2:in `new'
from (irb):2
迁移到Newtonsoft.Json
。
在System.Text.Json
中配置System.Text.Json
的.NET Core 2.2应用程序中,如何使用Newtonsoft.Json
具有相同的行为?您可以找到here中所述的DefaultValueHandling = DefaultValueHandling.Ignore
选项。
答案 0 :(得分:1)
我认为这会有所帮助
services.AddMvc().AddJsonOptions(options => options.JsonSerializerOptions.IgnoreNullValues = true);
答案 1 :(得分:1)
我认为您无法做到这一点,至少不能以简单的方式做到。您可以使用null
类的IgnoreVullValues
属性轻松忽略JsonSerializerOptions
值,但这只会忽略null
值,并且仍使用默认值序列化整数,布尔值等。
您可以找到有关JsonSerializerOptions
类here
答案 2 :(得分:0)
有一个建议的api建议#42635用于忽略默认值,该默认值已添加到2020年11月发布的.NET Core 5.0版本中。Newtonsoft当前是唯一值得用于此特定问题的受支持解决方案。 / p>
答案 3 :(得分:0)
请尝试使用我写的作为System.Text.Json扩展的库来提供缺少的功能:https://github.com/dahomey-technologies/Dahomey.Json。
您会发现支持忽略默认值:
using Dahomey.Json;
using Dahomey.Json.Attributes;
using System.Text.Json;
public class ObjectWithDefaultValue
{
[JsonIgnoreIfDefault]
[DefaultValue(12)]
public int Id { get; set; }
[JsonIgnoreIfDefault]
[DefaultValue("foo")]
public string FirstName { get; set; }
[JsonIgnoreIfDefault]
[DefaultValue("foo")]
public string LastName { get; set; }
[JsonIgnoreIfDefault]
[DefaultValue(12)]
public int Age { get; set; }
}
通过调用JsonSerializerOptions来设置json扩展,该扩展方法是在命名空间Dahomey.Json中定义的扩展方法SetupExtensions: 然后使用常规的Sytem.Text.Json API序列化您的类:
public void Test()
{
JsonSerializerOptions options = new JsonSerializerOptions();
options.SetupExtensions();
ObjectWithDefaultValue obj = new ObjectWithDefaultValue
{
Id = 13,
FirstName = "foo",
LastName = "bar",
Age = 12
};
string json = JsonSerializer.Serialize(obj, options); // {"Id":13,"LastName":"bar"}
}