验证字符串在.NET Core 3.0中是否为有效的json(最快的方式)

验证字符串在.NET Core 3.0中是否为有效的json(最快的方式),json,.net-core,Json,.net Core,我知道我可以使用带有try/catch的外部库(newtonsoft)来检查字符串是否是有效的json结构。我不想反序列化到一个对象(因为json可以是一个或多个属性),重点是确保它的json有效 我更喜欢使用System.Text.Json,但不确定什么是最好的,TryParseValue、JsonDocument等我使用Utf8JsonReader,只需在根对象上调用TrySkip();这将检查它是否至少格式正确。此示例适用于我使用.NET Core 3.1的情况,如果字符串不是格式正确的J

我知道我可以使用带有try/catch的外部库(newtonsoft)来检查字符串是否是有效的json结构。我不想反序列化到一个对象(因为json可以是一个或多个属性),重点是确保它的json有效


我更喜欢使用System.Text.Json,但不确定什么是最好的,TryParseValue、JsonDocument等

我使用Utf8JsonReader,只需在根对象上调用TrySkip();这将检查它是否至少格式正确。

此示例适用于我使用.NET Core 3.1的情况,如果字符串不是格式正确的JSON,将引发异常:

string json=“{\“TestKey\”:\“TestValue\”}”;
//确保字符串是有效的JSON。
尝试
{
var js=new Newtonsoft.Json.JsonSerializer();
反序列化(Newtonsoft.Json.JsonTextReader(newsystem.IO.StringReader(Json));
}
catch(Newtonsoft.Json.JsonReaderException)
{
投掷;
}

遗憾的是,我认为System.Text.Json还没有这方面的功能。在你的情况下,我会选择NewtonSoft的JsonSchemas。如果你愿意试试的话。。catch解决方案,您可以使用System.Text.Json1执行如下操作
尝试{return JsonSerializer.Deserialize(jsonData);}catch(JsonException){return default;}
您的意思是“有效”还是“格式良好”?还是“匹配某个模式”中的“有效”?2) 如果您需要检查JSON格式是否正确,请注意,每个JSON解析器在解析JSON的方式上都有一些细微的差异(请参见和),因此最好将您的验证程序与最终的序列化程序相匹配。使用堆栈、哈希集等。这个答案可以使用一些细化或代码示例。