如何使用JSON.NET确保该字符串是有效的JSON

如何使用JSON.NET确保该字符串是有效的JSON,第1张

如何使用JSON.NET确保该字符串是有效的JSON

通过代码:

最好的选择是在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将其反序列化。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5559848.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存