通过代码:
最好的选择是在a内使用parse
try-catch并在解析失败的情况下捕获异常。 (我不知道任何
TryParse方法)。
(使用JSON.Net)
最简单的方法是
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"
或"'astring'"
作为有效令牌的值。另一种选择可能是同时使用JObject.Parse
,并JArray.Parse
在解析,看看他们的人成功,但我相信检查{}
和[]
应该更容易。
(感谢@RhinoDevel 指出来)
没有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 -Version4.0.20126.16343
)(从此处获取)
非代码方式:
通常,当有一个小的json字符串,而您试图在json字符串中发现错误时,我 个人 更喜欢使用可用的在线工具。我通常要做的是:
- 在JSONLint中将 JSON字符串粘贴到JSON验证程序,并查看其是否为有效JSON。
- 稍后将正确的JSON复制到http://json2csharp.com/并为其生成模板类,然后使用JSON.Net将其反序列化。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)