在 C# 中使用拆分 json 签入 if 条件 ASP.NET [closed]

Use the split json to check in if condition in C# ASP.NET [closed]

提问人:hud 提问时间:10/10/2023 最后编辑:marc_shud 更新时间:10/11/2023 访问量:62

问:


想改进这个问题吗?通过编辑这篇文章添加详细信息并澄清问题。

上个月关闭。

我有一个 JSON 字符串,我将其拆分为 2 个不同的字符串。但我想用它来验证某些条件。

这是 json 字符串的拆分:

string[] strMyObjects = jsonString.Split(',');

并把它放在字符串中,比如

string strValidCheck = strMyObjects[0];

拆分的 JSON 字符串如下所示

{ "IsAuthenticated": "true"

我想使用

if strValidCheck == true

然后

{ do something  }

那么我怎样才能用C#编写呢?

C# asp.net JSON 拆分

评论

1赞 Heretic Monkey 10/11/2023
不要在 JSON 上使用字符串方法;解析它,然后使用对象方法来获取所需的部分。

答:

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}");

因此,您不想要和需要的一切都被忽略了。