gpt4 book ai didi

c# - 如何使用 C# 检测包含尾随逗号的无效 JSON?

转载 作者:行者123 更新时间:2023-11-30 17:47:03 25 4
gpt4 key购买 nike

是的是的,我知道关于检测无效Json的帖子数不胜数。他们都说同样的话:尝试解析或反序列化对象。你猜怎么了?在这种情况下,Json.NET 会愉快地解析我格式错误的 JSON 而不会提示。我认为我需要澄清一下:我的 JSON 唯一的问题是数组中的尾随逗号。下面说明了我的问题:

string badJson = "{ 'array' : [ {'objName1' : 'value1'}, {'objName2' : 'value2'}, {'objName3' : 'value3'}, ] }";

var obj = JObject.Parse(badJson);

JSON 在浏览器中无效,因为它在数组中有一个尾随逗号,但它很高兴地被解析为一个 jobject。由于我实际上无法使用序列化来检测此问题,我该怎么办?

请注意,我已尝试序列化为一个对象,结果相同。

更新:

以下代码将正确检测逗号并将其删除,以备不时之需:

var regex = new Regex(@"(.*?),\s*(\}|\])",(RegexOptions.Multiline));

var cleanJson = regex.Replace(content, m => String.Format("{0} {1}",m.Groups[1].Value,m.Groups[2].Value));

另一种可能的解决方案是将 .NET Json 解析器与我的对象模型一起使用。另一个对我有用的解决方案是将对象解析为 Jobject,然后再次将其序列化。这让我可以在需要的地方使用 Json。这比上面的正则表达式慢得多,所以我最终使用了正则表达式。

最佳答案

if Regex.IsMatch(badJson, "^.*,\s*]\s*}$") 
throw new Exception("hey that's bad json");

关于c# - 如何使用 C# 检测包含尾随逗号的无效 JSON?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25209757/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com