如何将空的 DateTime 值传递给 json?
Posted
技术标签:
【中文标题】如何将空的 DateTime 值传递给 json?【英文标题】:How to pass empty DateTime value to json? 【发布时间】:2021-05-15 07:33:42 【问题描述】:我有以下名为“originalJson”的 json
"user_active": true,
"user_firstname": "Bob",
"user_lastname": "Tester",
"user_displayname": "Bobby",
"user_primary_email": "bob@tester.com",
"user_login_enabled": true,
"user_profile":
"user_locale": "en-gb",
"user_lang": "en-gb"
,
"user_identities": [],
"user_roles": [
"app_id": "74a019c9-7171-4af0-a773-3984edaa35ca",
"context_uuid": "74a019c9-7171-4af0-a773-3984edaa35ca",
"context_type": "context_application",
"role_oid": "test_role_a",
"role_start_date": "2020-06-27T13:00:00Z",
"role_end_date": "2021-06-27T13:00:00Z"
]
我正在尝试将 role_end_date 值替换为空值“”。 我尝试将其更改为 DateTime?但后来我无法将 jobject 值转换为正确的格式字符串。 我已经尝试了以下
DateTime roleendDate = DateTime.Now;
var emptyDate = roleendDate.ToString();
emptyDate = null;
roleendDate = Convert.ToDateTime(emptyDate);
JObject jObj = JObject.Parse(originalJson);
jObj["user_roles"][0]["role_end_date"] = null;
string updatedJson = jObj.ToString(Formatting.None);
但是它失败了并且不喜欢 "jObj["user_roles"]["role_end_date"]" 因为它是 DateTime 类型而不是 DateTime?。我
有什么想法吗?
【问题讨论】:
I am trying to replace the role_end_date value with an empty value ""
..你是吗?您显示的代码似乎没有尝试这样做。它似乎尝试使用 endDate
...的值填充该值,该变量未在您显示的代码的 sn-p 中定义。此外,您不想填充 ""
而只是将其设为空。
I have tried changing it to a DateTime?
...it
是什么?请准确,这样我们就不必推断您的意思。
However it is failing and doesn't like
...再次,请准确。如果出现错误,请准确告诉我们错误消息的内容以及引发错误的代码行。编程是关于精度和细节的。对问题的模糊描述只会让问题更难解决。
抱歉,是的,我现在已经找到了一个解决方法,但是请注意,我的问题并不清楚(只是给自己读了一遍)。下次我会牢记这一点。谢谢。
没问题。不过,如果您也能为我们澄清“它失败了”这一点,那就太好了。究竟是什么错误,究竟是哪一行代码抛出了它? :-)
【参考方案1】:
抱歉,这条线失败了
roleendDate = Convert.ToDateTime(emptyDate); because DateTime is not nullable.
我的解决方法是:将 roleendDate 设为 DateTime?然后将其转换回空字符串,因为它使日期为 '1/1/0001'
DateTime? emptyDate = roleendDate;
emptyDate = null;
roleendDate = Convert.ToDateTime(emptyDate);
var nullDate = roleendDate.ToString();
JObject jObj = JObject.Parse(originalJson)
if (nullDate.Equals("1/1/0001 12:00:00 AM"))
jObj["user_roles"][0]["role_end_date"] = string.Empty;
else
jObj["user_roles"][0]["role_end_date"] = roleendDate.ToString("yyyy-MM-dd'T'HH:mm:ss'Z'");
【讨论】:
以上是关于如何将空的 DateTime 值传递给 json?的主要内容,如果未能解决你的问题,请参考以下文章
Kotlin - 如何将空值传递给片段 newInstance 方法?
将空值传递给 SVG 路径(使用 d3.js)以抑制丢失数据
如何将 vb.net 中日期的空值传递给 sql 存储过程?
SrpingMVC/SpringBoot中restful接口序列化json的时候使用Jackson将空字段,空字符串不传递给前端