我尝试从 Newtonsoft.Json 迁移到 System.Text.Json。我想反序列化抽象类。Newtonsoft.Json 为此具有 TypeNameHandling。有没有办法通过.net core 3.0 上的 System.Text.Json 反序列化抽象类?
我想知道ToObject<>()Json.NET中System.Text.Json 的等效方法。
使用Json.NET,您可以使用任何JToken一个并将其转换为类。例如:
var str = ""; // some json string
var jObj = JObject.Parse(str);
var myClass = jObj["SomeProperty"].ToObject<SomeClass>();
Run Code Online (Sandbox Code Playgroud)
.NET Core 3的新功能我们将如何做到这一点 System.Text.Json
var str = ""; // some json string
var jDoc = JsonDocument.Parse(str);
var myClass = jDoc.RootElement.GetProperty("SomeProperty"). <-- now what??
Run Code Online (Sandbox Code Playgroud)
最初,我以为只是将JsonElement返回的内容jDoc.RootElement.GetPRoperty("SomeProperty")转换为字符串,然后反序列化该字符串。但是我觉得这可能不是最有效的方法,而且我真的找不到以其他方式进行操作的文档。
我有以下情况。我已经将问题简化为以下示例,尽管我的实际情况更复杂。
System.Text.Json不会完全序列化对象,但Newtonsoft Json.NET会。
假设我有以下类结构。
public class A
{
public string AProperty { get; set; } = "A";
}
public class A<T> : A where T : class, new()
{
public T TObject { get; set; } = new T();
}
public class B
{
public string BProperty { get; set; } = "B";
}
public class B<T> : B where T : class, new()
{
public T TObject { get; set; } = new T();
}
public …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个在 .net core 3.1 中呈现的页面,该页面基于 JSON 呈现页面。
如何反序列化本文末尾的 JSON?
我尝试反序列化它,但它不起作用,因为我丢失了每个组件的数据,因为 Page 类有一个List<Component>- 但我需要它是不同组件的列表。
页面模型:
public class Page
{
public int id { get; set; }
public string pagename { get; set; }
public string metatitle { get; set; }
public string metadescription { get; set; }
public string created_at { get; set; }
public string updated_at { get; set; }
public List<Component> components { get; set; }
}
public class Pages
{
public List<Page> pages { get; set; …Run Code Online (Sandbox Code Playgroud)