C#使用newtonsoft删除json子节点

siv*_*nna 5 c# wpf json json.net

我正在使用.net 3.5中的c#wpf开发一个应用程序.我使用newtonsoft库来解析json字符串.

我想知道如何删除json的子节点.

例如,我的json数据=

{"employees":[
{"firstName":"John", "lastName":"Doe"}, 
{"firstName":"Anna", "lastName":"Smith"}, 
{"firstName":"Peter", "lastName":"Jones"}]}
Run Code Online (Sandbox Code Playgroud)

功能

jobject.Remove("employees");
Run Code Online (Sandbox Code Playgroud)

成功删除所有节点

我想知道如何单独删除第一个员工细节.

gai*_*zov 6

将 json 解析为 a 后JObject,员工属性将是 a JArray。该JArray班有你要找的方法,如JArray.RemoveAt

以下代码将执行您想要的操作

string json =
@"{
    ""employees"":[
        { ""firstName"":""John"", ""lastName"":""Doe""}, 
        { ""firstName"":""Anna"", ""lastName"":""Smith""}, 
        { ""firstName"":""Peter"", ""lastName"":""Jones""}
    ]
}";

dynamic obj = JObject.Parse(json);
(obj.employees as JArray).RemoveAt(0);

// obj now only has "Anna Smith" and "Peter Jones"
Run Code Online (Sandbox Code Playgroud)

dynamic 是在 .NET 4.0 中引入的,因此对于 3.5,您可以使用类似这样的东西

JObject obj = JObject.Parse(json);
(obj["employees"] as JArray).RemoveAt(0);
Run Code Online (Sandbox Code Playgroud)