如何从JsonObject中获取JsonValueKind?
获取JsonNode的JsonValueKind方法
你可以直接通过JsonNode的ValueKind属性获取节点类型,由于已经通过TryGetPropertyValue成功匹配到属性,此时property必然不为null,直接访问即可:
if (jsonObj.TryGetPropertyValue("property1", out JsonNode? property)) { JsonValueKind kind = property.ValueKind; var myProp = property.GetValue<string>(); }
如果编译器因可空性检查报错,可添加null包容运算符(!)明确告知编译器当前property非空:
JsonValueKind kind = property!.ValueKind;
不同类型的JsonNode对应不同的JsonValueKind:
JsonObject对应JsonValueKind.ObjectJsonArray对应JsonValueKind.ArrayJsonValue则对应具体值类型(如字符串对应String、数字对应Number等)
完整示例:
string inputString = "{\"property1\": \"demo\", \"property2\": 456}"; JsonObject jsonObj = JsonNode.Parse(inputString).AsObject(); if (jsonObj.TryGetPropertyValue("property1", out JsonNode? strProp)) { Console.WriteLine(strProp.ValueKind); // 输出:String var strValue = strProp.GetValue<string>(); } if (jsonObj.TryGetPropertyValue("property2", out JsonNode? numProp)) { Console.WriteLine(numProp.ValueKind); // 输出:Number var numValue = numProp.GetValue<int>(); }
注意:该特性需要.NET 6及以上版本的System.Text.Json支持,低版本需升级框架。
内容的提问来源于stack exchange,提问作者ilya_i
相关产品推荐
相关产品推荐

