提问人:hud 提问时间:10/10/2023 最后编辑:marc_shud 更新时间:10/11/2023 访问量:62
在 C# 中使用拆分 json 签入 if 条件 ASP.NET [closed]
Use the split json to check in if condition in C# ASP.NET [closed]
问:
我有一个 JSON 字符串,我将其拆分为 2 个不同的字符串。但我想用它来验证某些条件。
这是 json 字符串的拆分:
string[] strMyObjects = jsonString.Split(',');
并把它放在字符串中,比如
string strValidCheck = strMyObjects[0];
拆分的 JSON 字符串如下所示
{ "IsAuthenticated": "true"
我想使用
if strValidCheck == true
然后
{ do something }
那么我怎样才能用C#编写呢?
答:
3赞
jason.kaisersmith
10/10/2023
#1
如果将字符串片段转换为完整有效的 JSON 字符串,则只需对其进行反序列化并检查值即可。
因此,首先创建一个简单的类来反序列化
public class ReallySimple
{
public bool IsAuthenticated { get; set; } = false;
}
然后通过添加尾随并反序列化它来分段有效的 json}
string strValidCheck = strMyObjects[0];
var simpleClass = JsonConvert.DeserializeObject<ReallySimple>(strValidCheck + "}");
if(simpleClass.IsAuthenticated == true)
{
//do something
}
但是,您可能能够处理比您想象的更简单的所有事情。 JSON 反序列化的优点之一是,您只需要反序列化实际需要的属性。
因此,即使你有一个很长的复杂 JSON,你也可以选择你想要的东西。
因此,假设您有以下 JSON
{
"title": "example glossary",
"IsAuthenticated": "true",
"MyIntValue": 69,
"ID": "SGML",
"SortAs": "SGML",
"GlossTerm": "Standard Generalized Markup Language",
"Acronym": "SGML",
"Abbrev": "ISO 8879:1986",
"GlossDef": {
"para": "A meta-markup language, used to create markup languages such as DocBook.",
"GlossSeeAlso": [
"GML",
"XML"
]
},
"GlossSee": "markup"
}
但是我们只需要 2 个项目,然后我们只需创建我们想要的类和结构并将其反序列化。
public class MyCutDownClass
{
public bool IsAuthenticated { get; set; }
public int MyIntValue { get; set; }
}
var json = "{\r\n \"title\": \"example glossary\",\r\n \"IsAuthenticated\": \"true\",\r\n \"MyIntValue\": 69,\r\n \"ID\": \"SGML\",\r\n \"SortAs\": \"SGML\",\r\n \"GlossTerm\": \"Standard Generalized Markup Language\",\r\n \"Acronym\": \"SGML\",\r\n \"Abbrev\": \"ISO 8879:1986\",\r\n \"GlossDef\": {\r\n \"para\": \"A meta-markup language, used to create markup languages such as DocBook.\",\r\n \"GlossSeeAlso\": [\r\n \"GML\",\r\n \"XML\"\r\n ]\r\n },\r\n \"GlossSee\": \"markup\"\r\n}";
var myObj = JsonConvert.DeserializeObject<MyCutDownClass>(json);
Console.WriteLine($"Int value = {myObj.MyIntValue}");
Console.WriteLine($"Authenticated = {myObj.IsAuthenticated}");
因此,您不想要和需要的一切都被忽略了。
评论