如何在Newtonsoft中实现类似JsonObject的ContainsKey与Add功能
改用Newtonsoft.Json实现对应功能的方案
Newtonsoft.Json中对应System.Text.Json.Nodes.JsonObject的类型是JObject,它原生支持你需要的ContainsKey和Add方法,用法和原代码几乎一致。以下是完整的替换代码:
using Newtonsoft.Json; using Newtonsoft.Json.Linq; JObject? content; try { content = JObject.Parse(stringContent); } catch (JsonReaderException e) { // 日志记录 } if (content?.ContainsKey("Test") == true) { continue; } content?.Add("Test", "blah blah"); string newContent = JsonConvert.SerializeObject(content, Formatting.Indented);
关键对应点说明
- 反序列化:原代码的
JsonSerializer.Deserialize<JsonObject>对应Newtonsoft的JObject.Parse(也可使用JsonConvert.DeserializeObject<JObject>,效果一致) - 键存在判断:
JObject.ContainsKey和原JsonObject.ContainsKey用法完全相同 - 添加键值对:
JObject.Add和原JsonObject.Add用法一致 - 序列化缩进:原代码的
WriteIndented = true对应Newtonsoft的Formatting.Indented
关于转义问题
Newtonsoft.Json默认的字符转义策略和System.Text.Json不同,不会将&&转义为\u0026、"转义为\u0022,正好能解决你遇到的转义异常问题。如果需要更精细控制转义规则,还可以通过JsonSerializerSettings的StringEscapeHandling属性调整。
内容的提问来源于stack exchange,提问作者erick
相关产品推荐
相关产品推荐

