从 JObject 中选择并删除嵌套键值

Rav*_*tri 3 c# json json.net

我有一个 JObject,我想检查它是否存在某个键值对,如果存在,则从键中获取值,然后删除键。

JObject-props

{
  "name": "Red Game",
  "id": "0060a00000alKw3AAE",
  "statecode": 0,
  "StudioId": {
    "pfstudioid": "B20996D68598FF7F"
  },
  "statuscode": 1,
  "lastapicall": "2018-10-11T00:00:00Z"
}
Run Code Online (Sandbox Code Playgroud)

在我的代码中我有:

if (props.ContainsKey("StudioId.pfstudioid"))
{
    string value= props.GetValue("StudioId.pfstudioid")                      
    props.Remove("StudioId.pfstudioid");
}
Run Code Online (Sandbox Code Playgroud)

但它没有发现 JObject 中存在它们的键,因此跳过了if条件块。我该如何正确地写这个?

Fra*_*erZ 9

问题不在于你的.ContainsKey方法,而在于props.Remove()。您不能使用点符号来删除子项。您可以通过以下方式删除该键:

props.Value<JObject>("StudioId").Remove("pfstudioid");
Run Code Online (Sandbox Code Playgroud)

在这里查看我的.net小提琴: https: //dotnetfiddle.net/8mVEaa