[英]Extract and compare only jarray value from Dictionary<string, object> param data
[英]C# Dictionary<string, object> param jarray value extraction query
我正在制作 api 服务器
我正在尝试从请求文本中的 jarray 数据中提取所需的 vlaue 值。
我的请求的全文是这样的
{
"Name": "",
"Tel": "",
"array": [
{
"GroupID": "0001",
"CodeID": "01",
"Value": "1"
},
{
"GroupID": "0001",
"CodeID": "02",
"Value": "1"
},
{
"GroupID": "0001",
"CodeID": "03",
"Value": "1"
},
{
"GroupID": "0001",
"CodeID": "04",
"Value": "1"
}
]
}
我只想将对象 [] 中的数组中的值放入请求的全文中
我只想使用 foreach 将我想要的数据放入 object[]
var arr = param.Values.Where(d => d.GetType() == typeof(object[])).Single() as Object[];
var codes = arr.OfType<Code>().Select(d => d.Value).ToArray();
internal class Code
{
public string GroupId { get; set; }
public string CodeId { get; set; }
public string Value { get; set; }
}
我用这些代码编写了代码,但我得到了错误
我认为的问题是请求全文中数组的值是
这似乎是一个错误,因为它是 Newtonsoft.Json.Linq.JArray。
我应该如何在我添加的代码中进行转换?
一个简单的解决方案是在原始 DTO 中反序列化,然后转换为所需的结构:
class Request
{
public string Name { get; set; }
public string Tel { get; set; }
public Code[] array { get; set; }
}
class Code
{
public string GroupId { get; set; }
public string CodeId { get; set; }
public string Value { get; set; }
}
class Program
{
static void Main(string[] args)
{
var request = JsonConvert.DeserializeObject<Request>(File.ReadAllText("request.json"));
string[] values = request.array.Select(c => c.Value).ToArray();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.