[英]Is there a way to validate if a String is JSON format in C#?
我嘗試使用在此答案中找到的代碼 :-
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;
}
這段代碼的問題在於,它會正確驗證錯誤的JSON文件,因為JToken.Parse會自動刪除序列中加倍的元素,例如:
{
"Body" : {
"Data" : {}
},
"Head" : {
"RequestArguments" : {
"Scope" : ""
},
"Status" : {
"Code" : 255,
"Reason" : "CGI-Args: Invalid parameter '' for Scope.",
"UserMessage" : ""
},
"Timestamp" : "2017-01-24T13:15:33+01:00"
},
"Head" : {
"RequestArguments" : {
"Scope" : ""
},
"Status" : {
"Code" : 255,
"Reason" : "CGI-Args: Invalid parameter '' for Scope.",
"UserMessage" : ""
},
"Timestamp" : "2017-01-24T13:15:33+01:00"
}
}
這里不允許在同一級別上有2個Head Token,但是JToken會自動解析2個Head Token之一,因此生成的Object有效
您可以修改此代碼以檢查JToken.Parse()結果中的元素。 如果值重復,則可以返回false
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.