C# 获取返回的JSON字符串C的值#

C# 获取返回的JSON字符串C的值#,c#,json,serialization,C#,Json,Serialization,我有JSON回复,我需要从中获取“Id”。我尝试了下面代码的两种变体 using (JsonDocument document = JsonDocument.Parse(jsonstring)) { JsonElement root = document.RootElement; JsonElement resultsElement = root.GetProperty("Result"); List<string&g

我有JSON回复,我需要从中获取“Id”。我尝试了下面代码的两种变体

    using (JsonDocument document = JsonDocument.Parse(jsonstring))
    {

         JsonElement root = document.RootElement;
         JsonElement resultsElement = root.GetProperty("Result");
         List<string> names = new List<string>();

         foreach (var result in resultsElement.EnumerateObject())
         {


               if (result.Value.TryGetProperty("Id", out resultsElement))
               {
                    names.Add(resultsElement.GetString());
               }
         }
   }

我似乎无法使用上述方法获取特定的Id。

我认为这对你自己来说很难;仅映射到一个类型就容易得多:

公共类MyRoot{
[JsonProperty(“代码”)]
公共整数代码{get;set;}
[JsonProperty(“结果”)]
公共MyResult结果{get;set;}
}
公共类MyResult{
公共int Id{get;set;}
公共字符串名称{get;set;}
}
和使用:

var root=JsonConvert.DeserializeObject(json);
var result=root.result;
//等

您可以枚举解析的
JsonDocument
根元素和
结果元素。或者对具有
JsonValueKind.Object
类型并获取
id
值的每个子节点递归执行该操作

使用(var document=JsonDocument.Parse(File.ReadAllText(“test.json”))
{
JsonElement root=document.RootElement;
变量名称=新列表();
枚举(根);
无效枚举(JsonElement元素)
{
if(element.ValueKind==JsonValueKind.Object)
{
foreach(元素.EnumerateObject()中的变量项)
{
if(item.Value.ValueKind==JsonValueKind.Object)
{
枚举(项目值);
}
if(item.Value.ValueKind==JsonValueKind.Number&&item.Name==Id)
{
//Console.WriteLine(item.Value.GetRawText());
name.Add(item.Value.GetRawText());
}
}
}
}
}

此代码允许您枚举具有任意嵌套级别的JSON

此JSON字符串中没有数组。这是一个带有
结果
属性的对象,它包含另一个对象非常感谢您的回复。最后我就这样做了,非常完美。
    {
    "code":1,
    "result":{
        "Id":1,
        "Name":"name"
        }
    }