相关疑难解决方法(0)

在Json.NET序列化中有没有办法区分"null因为不存在"和"null因为null"?

我正在ASP.NET webapi代码库中工作,我们在很大程度上依赖于通过JSON.NET自动支持将消息体的JSON反序列化为.NET对象.

作为构建我们的一个资源的补丁支持的一部分,我非常希望区分JSON对象中不存在的可选属性与明确为null的相同属性.我的意图是使用第一个"不要改变那里有什么"与"删除这个东西".

有没有人知道是否有可能标记我的C#DTO,以便在反序列化时,JSON.NET可以告诉我它是哪种情况?现在他们只是空出来,我不知道为什么.

相反,如果有人能够提出一个更好的设计,不需要我这样做,同时仍然支持补丁动词,我很想听听你的建议.

作为一个具体的例子,考虑将传递给put的这个有效负载:

{
  "field1": "my field 1",
  "nested": {
    "nested1": "something",
    "nested2": "else"
  }
}
Run Code Online (Sandbox Code Playgroud)

现在,如果我只想更新field1,我应该能够将其作为HTTP补丁发送:

{
  "field1": "new field1 value"
}
Run Code Online (Sandbox Code Playgroud)

并且嵌套值将保持不变.但是,如果我发送了这个:

{
  "nested": null
}
Run Code Online (Sandbox Code Playgroud)

我想知道这意味着我应该明确删除嵌套数据.

c# asp.net json json.net asp.net-web-api

16
推荐指数
2
解决办法
2232
查看次数

如何将"undefined"添加到JObject集合 - JToken/JValue.Undefined在哪里?

使用Json.NET时,我试图使用"JSON to LINQ"支持动态创建JSON结构.

在下面,jObject是一个JObject和JObject.Add采用(字符串,JToken).但是,我无法找到如何添加Undefined或Null标记 - 我也无法找到如何使用适当的Null/Undefined类型创建JValues.

string value = GetValue();
if (value == "undefined") {
  jObject.Add(key, /* how to add "Undefined" token? */);
} else if (value == "null") {
  jObject.Add(key, /* how to add "Null" token? */);
} else {
  jObject.Add(key, new JToken(value));  /* String value/token */
}
Run Code Online (Sandbox Code Playgroud)

如何为未定义的JSON显式添加JToken/JValue?JSON Null怎么样?

c# json undefined json.net linq-to-json

-2
推荐指数
1
解决办法
3453
查看次数

标签 统计

c# ×2

json ×2

json.net ×2

asp.net ×1

asp.net-web-api ×1

linq-to-json ×1

undefined ×1