- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在下面的代码行中,当 clInitializer.AVOptions = null
值时,我的 string x
最终成为实际字符串“null”:
string x = JsonConvert.SerializeObject(clInitializer.AVOptions, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore});
如实际单词“null”而不是 null
值或 {}
。我不确定这是预期的行为。有谁知道如何让它不返回“null”这个词,或者我对 JsonConvert
的工作原理有一些根本性的误解。提前谢谢你。
最佳答案
NullValueHandling
与属性的 null 值有关,而不是它自身的对象。
例如,如果您有以下示例:
public class ExampleClass
{
public string NullProperty { get; set; }
}
然后你序列化它:
var obj = new ExampleClass();
var jsons = JsonConvert.SerializeObject(obj, new JsonSerializerSettings() { NullValueHandling = NullValueHandling.Ignore });
然后 NullProperty
被忽略,您得到 {}
。
已编辑
返回“null”的原因是因为 JSON (https://www.rfc-editor.org/rfc/rfc7159) 的 RFC 明确说明如下:
A JSON value MUST be an object, array, number, or string, or one of
the following three literal names:false null true
The literal names MUST be lowercase. No other literal names are
allowed.value = false / null / true / object / array / number / string
false = %x66.61.6c.73.65 ; false
null = %x6e.75.6c.6c ; null
true = %x74.72.75.65 ; true
已编辑:
我最初有一个变通办法,但我删除了它,因为我真的认为你应该遵循 RFC。 RFC 明确指出 NULL 对象必须由“null”表示,因此任何解决方法都不是一个好主意。
为了遵守 RFC,我会存储“null”或返回“null”而不是 NULL。当您反序列化“null”时,它将返回 NULL 值。
关于c# - JsonConvert.SerializeObject : Unexpected result when Serializing null value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47027376/
我有序列化对象的功能。它在每种情况下都工作正常,除非我使用特定对象运行。这是包含任务的类的对象。但我不明白为什么这会成为问题。 在 Debug模式下,代码只是卡住,没有任何错误或任何异常。只是停下来等
我发现下面的代码可以从表单数据创建一个对象,到目前为止它运行良好,但我想更进一步,将包含数字的字符串转换为整数。构建函数处理数据部分,但在我使用这段代码的地方失败了: base[key] = isNa
我正在使用 Newtonsoft.Json 来序列化自定义类,但我对库如何处理 double 值的默认值有疑问。 类可以是这样的: class Person { public string F
我正在尝试将数据集转换为 .net core 2.0 中的 JSON,并使用以下代码来执行此操作 return Ok(JsonConvert.SerializeObject(dataset, Form
我在我的项目中添加了 json dll 并尝试序列化对象: ProductType itemToEdit = new ProductType("Name"); string jsonString
以前从未见过,基本上我的 MSMQ 调用抛出访问被拒绝,在 Visual Studio 中显示为( exception.ToString()) System.Messaging.MessageQueu
我在手机上找不到该文件。我想要一个桌面应用程序,可以读取我用手机保存的文件(加速度计数据),并且因为我对 Android 开发非常陌生,所以我决定最简单的方法就是在文件系统中找到它,然后打开通过以下方
将 .net 类序列化为 json 并在 javascript 中使用它的正确方法是什么? 例如在服务器端我们有这个: public ActionResult Index() {
我有一个以 JSON 格式返回数据库表的 WCF 服务。 SeralizeObject 将 unicode 添加到我的 httpresponse,我该如何删除它? 代码: using (var db
我有一个对象说: public class Comment { public string Id { get; set; } public string Author { get; s
我需要将 .net 对象转换成这种格式: { "http://www.example.com/extension/powered-by": { "name
Json.Net中默认的ident好像是2个空格: var result = JsonConvert.SerializeObject(jsonString, Formatting.Indented);
我在方法 JsonTypeConverter.ConvertTo 中得到 StackOverflowException调用 Project.Settings.Default.Save() 时 我认为这
我有一个简单的类: public class ProductListStoredModel: List { public int NextId { get; set; } } 如
我对“JsonConvert.SerializeObject”有一个严重的问题我需要序列化超过 500,000 条字典记录才能使序列化抛出以下错误;系统.OutOfMemoryException。我试
给定代码: dynamic foo = new ExpandoObject(); foo.Bar = "something"; string json = Newtonsoft.Json.JsonCo
好吧,我不明白为什么 JsonConvert.SerializeObject序列化 DateTime对象不同于 JsonSerializer.Serialize。 鉴于类(class) public
我正在使用 jQuery,特别是这个函数 $("#postStatus").serializeObject(); 它在 Chrome 和 Safari 中工作得非常好,但是当我在 Firefox 中执
我正在使用 Entity Framework 和数据库优先方法。我想用来自数据库的数据填充饼图。图表将显示在主页中,因此我在 HomeController 中创建了一个名为 FillChart 的方法
我正在尝试使用 Newtonsoft 的解析器重新创建以下 JavaScript 代码: var nav = { container: $('.ux-navigation-control'), man
我是一名优秀的程序员,十分优秀!