Jtoken 包含 DateTime tostring 意外行为
Jtoken containing DateTime tostring unexpected behaviour
我有这个json:
{
"sku": "articlenumber",
"lastModified": "2022-05-06T10:07:23.934Z",
"quantity": 20
}
我必须发送“lastModified”的准确值。因为我不必对这个值做任何操作,所以我决定将它存储在一个字符串中。问题是将 JToken 转换为字符串给我一个完全不同的格式:
string foo = (string)json["lastModified"]
/// 05/06/2022 10:07:23
如何从 json 中获取实际收到的原始字符串?
我已经尝试过的:
将数据解析为日期时间对象并使用自定义设置进行序列化
JsonSerializerSettings settings = new JsonSerializerSettings
{
DateFormatString = "yyyy-MM-dd'T'HH:mm:ss.fffZ",
DateTimeZoneHandling = DateTimeZoneHandling.RoundtripKind
};
这给了我一个格式正确的字符串,但将毫秒归零。
/// "2022-05-06T10:07:23.000Z"
var json = "{\"sku\": \"articlenumber\",\"lastModified\": \"2022-05-06T10:07:23.934Z\", \"quantity\": 20}";
var settings = new JsonSerializerSettings { DateParseHandling = DateParseHandling.None };
var data = JsonConvert.DeserializeObject<JObject>(json, settings);
var result = data.Value<string>("lastModified");
- 这里的技巧是
DateParseHandling.None
- 奇怪的部分是使用
DeserializeObject
得到 JObject
如果您愿意,也可以使用 data["lastModified"].Value<string>()
。
我有这个json:
{
"sku": "articlenumber",
"lastModified": "2022-05-06T10:07:23.934Z",
"quantity": 20
}
我必须发送“lastModified”的准确值。因为我不必对这个值做任何操作,所以我决定将它存储在一个字符串中。问题是将 JToken 转换为字符串给我一个完全不同的格式:
string foo = (string)json["lastModified"]
/// 05/06/2022 10:07:23
如何从 json 中获取实际收到的原始字符串?
我已经尝试过的: 将数据解析为日期时间对象并使用自定义设置进行序列化
JsonSerializerSettings settings = new JsonSerializerSettings
{
DateFormatString = "yyyy-MM-dd'T'HH:mm:ss.fffZ",
DateTimeZoneHandling = DateTimeZoneHandling.RoundtripKind
};
这给了我一个格式正确的字符串,但将毫秒归零。
/// "2022-05-06T10:07:23.000Z"
var json = "{\"sku\": \"articlenumber\",\"lastModified\": \"2022-05-06T10:07:23.934Z\", \"quantity\": 20}";
var settings = new JsonSerializerSettings { DateParseHandling = DateParseHandling.None };
var data = JsonConvert.DeserializeObject<JObject>(json, settings);
var result = data.Value<string>("lastModified");
- 这里的技巧是
DateParseHandling.None
- 奇怪的部分是使用
DeserializeObject
得到JObject
如果您愿意,也可以使用 data["lastModified"].Value<string>()
。