gpt4 book ai didi

c# - Newtonsoft JSON,检查属性及其值是否存在

转载 作者:行者123 更新时间:2023-12-02 16:28:36 26 4
gpt4 key购买 nike

我有一个 API,我在其中获取 JSON 作为输入,我想检查指定的属性及其值是否存在于该 JSON 中。

注意:JSON 不是从代码生成的,而是由用户输入的,因此我无法在序列化时验证 JSON。

考虑以下 JSON

{
"id": 1,
"someProperties":
{
"property1": "abc",
"property2": ["zzz", "ccc"]
}
}

someProperties中,property1property2既可以同时存在,也可以任意存在。所以我想检查所有属性都存在。如果存在,该属性是否具有有效值。

我尝试了以下代码:

dynamic request = JsonConvert.DeserializeObject(JSONRequestData);
var X = request["someProperties"]["property1"];

以下是我必须检查其各自响应的 2 种情况:

  • 如果 "property1": "abc" 在 JSON 中,那么我在 X 中得到 null >
  • 如果我将 property1 放入 JSON 而没有它的值,它看起来像这样 "property1": , 那么我将得到 null

那么我如何区分 JSON 中的属性不存在属性值不存在

最佳答案

dynamic request = JsonConvert.DeserializeObject(JSONRequestData);总是创建一个 request作为JObject , 所以你可以使用 JObject 的方法. JObject本身实现了 IDictionary<string, JToken>接口(interface),它提供了 ContainsKey方法。所以你可以简单地做

request.someproperties.ContainsKey("property1");

这将返回 true仅当someproperties包含一个名为 property1 的属性,不管它的值(value)如何。即,request.someproperties.property1 是否无关紧要是null或任何类型,只要它包含在对象中。

另见 this fiddle

关于c# - Newtonsoft JSON,检查属性及其值是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63972270/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com