C# JsonElement相当于JObject.ToObject
我正在将核心2.2SDK移植到3.0。Newtonsoft已被本机Json引擎取代。My SDK使用C# JsonElement相当于JObject.ToObject,c#,json,.net-core-3.0,system.text.json,C#,Json,.net Core 3.0,System.text.json,我正在将核心2.2SDK移植到3.0。Newtonsoft已被本机Json引擎取代。My SDK使用ToObject() 这与JsonElement的等效性是什么 我想反序列化一个消息类,该类的事件属性只能在运行时确定: private class Message { public string Type { get; set; } public JsonElement Event { get; set; } public string[] GenericArgument
ToObject()
这与JsonElement的等效性是什么
我想反序列化一个消息
类,该类的事件
属性只能在运行时确定:
private class Message
{
public string Type { get; set; }
public JsonElement Event { get; set; }
public string[] GenericArguments { get; set; }
public int? Id { get; set; }
}
在System.Text.Json中,我必须使用此代码将事件
序列化为Json,然后再次将其反序列化为最终类型:
private dynamic ParseTypeData(Message message)
{
Type type = typeFinder.GetEventType(message.Type);
if (message.GenericArguments.Length > 0)
{
var genericArguments = message.GenericArguments
.Select(typeFinder.GetType)
.ToArray();
type = type.MakeGenericType(genericArguments);
}
var json = message.Event.GetRawText();
return JsonSerializer.Deserialize(json, type, Options);
}
在JSON.NET中,类是:
private class Message
{
public string Type { get; set; }
public JObject Event { get; set; }
public string[] GenericArguments { get; set; }
public int? Id { get; set; }
}
仅需要反序列化事件
:
return message.Event.ToObject(type);
您正在询问如何将JSON元素反序列化为对象。为什么要使用JsonElement?System.Text.Json是针对围绕ASP.NET核心序列化的非常特定的场景进行定制的。DOM解析到JsonDocument,使用JsonSerializer进行完全反序列化,或者使用Utf8JsonReader进行极低级别的不完全SAX。甚至连一个JSon流都没有,直到运行时我才知道它的类型,dto看起来像,我想这在newtonsoft中要优雅得多。你应该在问题本身中发布代码,这样人们才能理解上下文——你使用的是信号器,有一个消息类,它的负载可以是任何类型的对象。您所需要的也是Json.NET中的一个实用方法-字符串首先解析为JObject,然后
ToObject
使用反射构造并填充自定义对象。Json还不是那种解析器——它没有这样的实用方法,它专注于管道中的快速解析。它的工作是以最小的分配相关或重复:。快速向您提供一条消息
。您正在询问如何将JSON元素反序列化为对象。为什么要使用JsonElement?System.Text.Json是针对围绕ASP.NET核心序列化的非常特定的场景进行定制的。DOM解析到JsonDocument,使用JsonSerializer进行完全反序列化,或者使用Utf8JsonReader进行极低级别的不完全SAX。甚至连一个JSon流都没有,直到运行时我才知道它的类型,dto看起来像,我想这在newtonsoft中要优雅得多。你应该在问题本身中发布代码,这样人们才能理解上下文——你使用的是信号器,有一个消息类,它的负载可以是任何类型的对象。您所需要的也是Json.NET中的一个实用方法-字符串首先解析为JObject,然后ToObject
使用反射构造并填充自定义对象。Json还不是那种解析器——它没有这样的实用方法,它专注于管道中的快速解析。它的工作是以最小的分配相关或重复:快速给您一条消息。