我有一个原始字符串。我只想验证字符串是否是有效的 JSON。我正在使用 JSON.NET。
通过代码:
最好的办法是在 a 中使用 parsetry-catch并在解析失败的情况下捕获异常。 (我不知道任何TryParse方法)。
try-catch
TryParse
(使用 JSON.Net)
最简单的方法是Parse使用字符串JToken.Parse,并检查字符串是否分别以or开头和以{or[结尾 (从这个 [答案] 添加) :}``]
Parse
JToken.Parse
{
[
}``]
private static bool IsValidJson(string strInput) { if (string.IsNullOrWhiteSpace(strInput)) { return false;} strInput = strInput.Trim(); if ((strInput.StartsWith("{") && strInput.EndsWith("}")) || //For object (strInput.StartsWith("[") && strInput.EndsWith("]"))) //For array { try { var obj = JToken.Parse(strInput); return true; } catch (JsonReaderException jex) { //Exception in parsing json Console.WriteLine(jex.Message); return false; } catch (Exception ex) //some other exception { Console.WriteLine(ex.ToString()); return false; } } else { return false; } }
{ 添加对or等的检查的原因[是基于JToken.Parse将诸如"1234"or之类的值解析"'a string'"为有效令牌的事实。另一种选择可能是同时使用JObject.Parse和JArray.Parse解析并查看其中是否有人成功,但我相信检查{}并且[]应该更容易。
"1234"
"'a string'"
JObject.Parse
JArray.Parse
{}
[]
没有 JSON.Net
您可以利用 .Net framework 4.5 System.Json 命名空间,例如:
string jsonString = "someString"; try { var tmpObj = JsonValue.Parse(jsonString); } catch (FormatException fex) { //Invalid json format Console.WriteLine(fex); } catch (Exception ex) //some other exception { Console.WriteLine(ex.ToString()); }
(但是,您必须System.Json使用命令通过 Nuget 包管理器安装:PM> Install-Package System.Json -Version 4.0.20126.16343在包管理器控制台上)
System.Json
PM> Install-Package System.Json -Version 4.0.20126.16343
非编码方式:
通常,当有一个小的 json 字符串并且您试图在 json 字符串中查找错误时,我 个人 更喜欢使用可用的在线工具。我通常做的是: