繁体   English   中英

C#字典<string, object> param jarray 取值查询</string,>

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM