我有一个原始的字符串。我只想验证字符串是否为有效的JSON。我正在使用JSON.NET。
通过代码:
最好的选择是在a内使用parse try-catch并在解析失败的情况下捕获异常。 (我不知道任何TryParse方法)。
try-catch
TryParse
(使用JSON.Net)
最简单的方法是Parse使用JToken.Parse,并检查字符串是否分别以或开头,以{或[结束 (从此 答案中 添加 ) :}``]
Parse
JToken.Parse
{
[
}``]
private static bool IsValidJson(string strInput) { 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; } }
添加{或[等等的检查的原因是基于这样的事实:JToken.Parse它将解析诸如"1234"或"'a string'"作为有效令牌的值。另一种选择可能是同时使用JObject.Parse,并JArray.Parse在解析,看看他们的人成功,但我相信检查{}和[]应该更容易。 (感谢@RhinoDevel 指出来)
"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()); }
(但是,您必须 在Package Manager控制台上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字符串中发现错误时,我 个人 更喜欢使用可用的在线工具。我通常要做的是: