请求将基于Newtonsoft.Json的代码转换为System.Text.Json实现
将Newtonsoft.Json代码转换为System.Text.Json实现
原代码功能是解析JSON中myKey对应的数组,将元素转为大写后用逗号拼接。以下是基于System.Text.Json的等价实现:
转换后的代码
string myList = string.Empty; string jSon = /* 来源数据 */; // 使用JsonDocument解析JSON,需放在using块中自动释放资源 using JsonDocument doc = JsonDocument.Parse(jSon); JsonElement root = doc.RootElement; // 直接定位myKey属性,同时检查是否为数组类型 if (root.TryGetProperty("myKey", out JsonElement myKeyElement) && myKeyElement.ValueKind == JsonValueKind.Array) { foreach (JsonElement item in myKeyElement.EnumerateArray()) { // 确保元素是字符串类型后再处理 if (item.ValueKind == JsonValueKind.String) { myList += item.GetString()?.ToUpper() + ','; } } } // 可选:移除末尾多余的逗号 if (!string.IsNullOrEmpty(myList)) { myList = myList.TrimEnd(','); }
关键说明
- 替代
JObject的是JsonDocument,这是System.Text.Json中处理动态JSON的标准方式,必须通过using声明保证资源释放 - 直接通过
TryGetProperty定位目标属性,无需遍历所有键值对,效率更高 - 增加了类型检查(数组类型、字符串元素),避免原代码中可能出现的类型转换异常
- 将初始值从
null!改为string.Empty,避免拼接时出现空引用错误 - 额外添加了移除末尾逗号的逻辑,让最终结果更规范
测试示例
使用给定的JSON数据:
{"myKey":["fir","dsdsd"],"status":"ok"}
运行代码后,myList最终值为FIR,DSDSD(如果保留末尾逗号则为FIR,DSDSD,)
内容的提问来源于stack exchange,提问作者Kamran Shahid
相关产品推荐
相关产品推荐

