如何在 C# 中访问 JSON 中的值名称
本文关键字:JSON 访问 | 更新日期: 2023-09-27 17:56:47
>目前我有这个:
{
"example" :{
"001":{
"ID":"001",
"Name":"Test1"
},
"002":{
"ID": "002",
"Name": "test2"
}
}
}
我正在尝试访问名称,但到目前为止我有以下代码:
DataRow x = dtNew.NewRow();
Newtonsoft.Json.Linq.JObject obj = Newtonsoft.Json.Linq.JObject.Parse(testing);
x["Name"] = jobj2["example"]["????"]["Name"].ToString();
["001"]
部分取决于 ID
您需要了解的第一件事是您的 JSON 无效。您可以使用 JSONLint 来检查您的 JSON 是否有效。JSON 应该是对象或数组。
有效的 JSON 对象将是:
{
"example": {
"001": {
"ID": "001",
"Name": "Test1"
},
"002": {
"ID": "002",
"Name": "test2"
}
}
}
在这些更改之后,这对我有用:
DataRow x = dtNew.NewRow();
var obj = Newtonsoft.Json.Linq.JObject.Parse(testing);
x["Name"] = jobj2["example"]["001"]["Name"].ToString();
更新 1:OP 已修复他的 JSON 对象,问题已更改。
实际上,这是另一个问题。如何使用动态子对象名称解析 JSON 对象。
有几种方法可以做到这一点。我建议声明类并以这种方式将此 JSON 对象解析为Dictionary
:
public class Response
{
public Dictionary<string, ExampleObj> example { get; set; }
}
public class ExampleObj {
public string ID { get; set; }
public string Name { get; set; }
}
// Somewhere in code
string jsonString = "{'"example'" :{ '"001'":{ '"ID'":'"001'", '"Name'":'"Test1'" }, '"002'":{ '"ID'": '"002'", '"Name'": '"test2'" }}}";
var obj = JsonConvert.DeserializeObject<Response>(jsonString);
foreach (var keyValuePair in obj.example)
{
Console.WriteLine("That's a {0}", keyValuePair.Key);
Console.WriteLine("It's name is {0}", keyValuePair.Value.Name);
}
JsonConvert
会认出这个动态名称"????"(例如,'001')作为动态Dictionary
键 - 它的内容将被序列化为ExampleObj
类的Dictionary
值。
这是一个有效的DotNetFiddle演示。