基于价值的Json上的Foreach

时间:2018-01-05 01:03:03

标签: c# json list

请问,如何在C#中写下这个json的Foreach

{   "tabla": [
    {
      "nombretabla": "TABLE1",
      "campostabla": {
        "campo": [
          "FIELD1",
          "FIELD2"
        ]
      },
      "filtro": "FIELD1=100"
    },
    {
      "nombretabla": "TABLE2",
      "campostabla": {
        "campo": [
          "FIELD1",
          "FIELD2",
          "FIELD3"
        ]
      },
      "filtro": "FIELD2=200"
    }

  ] }

表示每个tabla元素的提取值,并在campo元素上提取值,以便在单独的列表中获得最终结果:

新列表1(tabla = TABLE1的值):

FIELD1
FIELD2

新列表2(tabla = TABLE2的值):

FIELD1
FIELD2
FIELD3

感谢。

1 个答案:

答案 0 :(得分:1)

这是一个粗略的例子,它使用Newtonsoft.Json nuget包,你可以从中工作并使用它作为灵感。它按表名分组,然后获取每个名称的列表。你可能想要以不同的方式做我不确定的事。

var o = JsonConvert.DeserializeObject<root>(json);
var groups = o.tabla.GroupBy(t => t.nombretabla);

foreach (var group in groups)
{
    var tableName = group.Key;

    var tabla = group.FirstOrDefault();
    if (tabla != null)
    {
        var list = tabla.campostabla.campo.ToList();

        foreach (var item in list)
        {
            Console.WriteLine(item);
        }
    }
}

您应根据需要更改的锅炉类......

public class root
{
    public Tabla[] tabla { get; set; }
}

public class Tabla
{
    public string nombretabla { get; set; }
    public CamposTabla campostabla { get; set; }
    public string filtro { get; set; }
}

public class CamposTabla
{
    public string[] campo { get; set; }
}