在.NET 6中使用System.Text.Json.Nodes命名空间时如何获取JsonObject的Json属性名称?

And*_*cho 3 c# json .net-6.0

我有一个简单的 Json 字符串

{
    "property1": "value1",
    "property2": "value1"
}
Run Code Online (Sandbox Code Playgroud)

我使用 System.Text.Json.Nodes 命名空间和以下行解析为 JsonObject

JsonObject obj = JsonNode.Parse(requestBody).AsObject();
Run Code Online (Sandbox Code Playgroud)

如何获取 JsonObject 的属性名称(property1 和 property2)?

如果有替代方案,这会对我有帮助

Ser*_*rge 6

你可以试试这个

JsonObject obj = JsonNode.Parse(requestBody).AsObject();
string[] propertyNames = obj.Select(p =>p.Key ).ToArray();
Run Code Online (Sandbox Code Playgroud)

结果

["property1","property2"]
Run Code Online (Sandbox Code Playgroud)

或者

   var doc = JsonDocument.Parse(json);

    foreach (var property in doc.RootElement.EnumerateObject())
    {
        Console.WriteLine($"{property.Name} - {property.Value}");
    }
Run Code Online (Sandbox Code Playgroud)

结果

property1 - value1
property2 - value1
Run Code Online (Sandbox Code Playgroud)

或使用 linq

string[] propertyNames = doc.EnumerateObject().Select(p => p.Name ).ToArray();
Run Code Online (Sandbox Code Playgroud)