如何在C# ASP.NET中通过拆分JSON字符串实现条件校验?
解决方案
直接通过字符串拆分来处理JSON是非常不可靠的(比如JSON字段顺序调整、值中包含特殊字符时都会出错),推荐使用C#官方的JSON解析库来处理,以下是两种可靠的实现方式:
方式一:定义实体类解析(推荐,类型安全)
首先定义和JSON结构匹配的实体类,然后用System.Text.Json(.NET Core 3.0+内置)解析整个JSON字符串:
// 定义对应实体类 public class AuthInfo { [JsonPropertyName("IsAuthenticated")] public bool IsAuthenticated { get; set; } // 如果JSON还有其他字段,可以在这里补充 } // 解析并判断 var authInfo = JsonSerializer.Deserialize<AuthInfo>(jsonString); if (authInfo?.IsAuthenticated == true) { // 这里执行你需要的特定操作 }
方式二:动态解析JSON(无需定义实体类)
如果不想创建实体类,可以直接解析JSON文档获取字段值:
using System.Text.Json; // 解析JSON文档 using var jsonDoc = JsonDocument.Parse(jsonString); bool isAuthenticated = jsonDoc.RootElement.GetProperty("IsAuthenticated").GetBoolean(); if (isAuthenticated) { // 执行特定操作 }
(不推荐)基于你当前拆分逻辑的临时处理
如果你一定要沿用现有的字符串拆分方式,可以对拆分后的字符串做清洗和解析:
string[] strMyObjects = jsonString.Split(','); string strValidCheck = strMyObjects[0]; // 清洗字符串并提取值 var cleanedStr = strValidCheck.TrimStart('{', ' '); var keyValuePair = cleanedStr.Split(new[] { ':' }, StringSplitOptions.RemoveEmptyEntries); if (keyValuePair.Length == 2) { string valueStr = keyValuePair[1].Trim().Trim('"'); if (bool.TryParse(valueStr, out bool isAuthenticated) && isAuthenticated) { // 执行特定操作 } }
注意:这种字符串处理方式只适用于当前特定的JSON格式,一旦JSON结构(比如空格、字段顺序、引号格式)发生变化,代码就会失效,因此强烈建议使用前面的JSON解析方案。
内容的提问来源于stack exchange,提问作者Nadeem
相关产品推荐
相关产品推荐

