我知道ASP.NET Web API本身使用Json.NET来(反)序列化对象,但有没有办法指定JsonSerializerSettings
你想要它使用的对象?
例如,如果我想将type
信息包含在序列化的JSON字符串中该怎么办?通常我会在.Serialize()
调用中注入设置,但Web API会默默地执行此操作.我找不到手动注入设置的方法.
我正在构建一个.net核心库.对于1.1和2.0,错误都是正确的.
我有一个JObject
(我读了一堆其他答案,人们告诉OP只做JsonConvert.Deserialize(obj)
,这不是一个选项,我需要它).
它JObject
在字符串中有一个日期,我将它反序列化为一个也将它作为字符串的对象,我需要使用与提供的格式相同的格式.
我看到的一个答案声称,只要对象成为JObject
日期,就会将其解析为该格式,但我发现情况并非如此,.ToObject()
而且这种转换实际上正在发生.
我在这里搜索了很多,发现了一些对我不起作用的公认解决方案.
这些都没有奏效.
测试代码:
using System;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
namespace JobjectDateTest
{
class Program
{
static void Main(string[] args)
{
var json = @"{""Data"": {""CreatedAt"":""2018-01-04T14:48:39.7472110Z""}}";
var thing = JsonConvert.DeserializeObject<Thing>(json);
Console.WriteLine(thing.Data.First); // "CreatedAt": "2018-01-04T14:48:39.747211Z"
var jsonSer = new JsonSerializer { DateFormatString = "yyyy-MM-ddTHH:mm:ssZ" };
var innerThing = thing.Data.ToObject<InnerThing>(jsonSer);
Console.WriteLine(innerThing.CreatedAt); // 01/04/2018 14:48:39
Console.WriteLine(innerThing.CreatedAt == "2018-01-04T14:48:39.7472110Z"); // false
jsonSer = new JsonSerializer { …
Run Code Online (Sandbox Code Playgroud)