在C#中合并2个不同的循环

时间:2019-02-24 23:34:57

标签: c# json

有没有办法组合两个foreach循环?

我试图在一个循环中从JSON文件中获取“ total”和“ Na”的值,但我不起作用。

使用“ data.items”时找不到“ total”的值,而使用“ data.total”时找不到“ Na”的值。

我尝试改用“数据”,但是它也不起作用……

代码:

foreach (var p in jsonbject.SelectToken("data.items"))
{
    Na = "";
}


foreach (var f in jsonbject.SelectToken("data.total"))
{
    total = "";
}

JSON代码

{{

  "data": {
    "total": 125,
    "items": [
      {
        "Na": "hdbcjd213",
      }

我要提取“总计”和“项目”的值并保存在数据库中。

简而言之,我想写这样的东西:

foreach (var p in jsonbject.SelectToken("['data.total','data.items']"))
{
  total = "";
  id = "";

}

1 个答案:

答案 0 :(得分:0)

您可能正在尝试错误的方法。

  1. 最好的方法是将数据转换为poco对象
    public class Item
    {

        [JsonProperty("Na")]
        public string Na { get; set; }
    }

    public class Data
    {

        [JsonProperty("total")]
        public int total { get; set; }

        [JsonProperty("items")]
        public IList<Item> items { get; set; }
    }

    public class Example
    {

        [JsonProperty("data")]
        public Data data { get; set; }
    }

然后反序列化数据-

    var data = JsonConvert.Deserialize<Example>("{ \"data\": ...... ")

现在,您可以使用对象data获取数据。 data.Itemsdata.Total

所以你可以写-

foreach( var item in data.Items){
    var toal = data.total;
    var na = item.Na;
}
  1. 或者,如果您只需要获取值,则可以使用dynamic
var data = JsonConvert.Deserialize<dynamic>("{ \"data\": ...... ");

var items = data.items;
var total = data.total;

....

foreach( var item in data.Items){
    var total = data.total;
    var na = item.Na;
}

但是对于这种方法,您必须在每次使用它们时都再次投射它们。

我希望这会有所帮助。如果这不是您要找的东西,请告诉我。