C# 获取返回的JSON字符串C的值#
我有JSON回复,我需要从中获取“Id”。我尝试了下面代码的两种变体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
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"
}
}