【问题标题】:Foreach on Json based on value [closed]基于价值的 Json 上的 Foreach [关闭]
【发布时间】:2018-06-14 19:19:07
【问题描述】:

请问,如何在 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

谢谢。

【问题讨论】:

  • 到目前为止您尝试过什么?您应该发布处理 JSON 的 C# 代码。
  • 我尝试了一个简单的 Foreach,但我无法为 Foreach 中的“tabla”元素的值更改设置“细分”。 (检查“tabla”的新值以初始化填充新列表)。
  • 我们不知道你是否已经解析了 JSON,你将它解析成什么样的数据结构等等。如果没有看到你的问题的上下文,真的很难帮助你。
  • 你不能按原样迭代 JSON - 它是序列化器输出(谷歌它)。因此,首先您需要对其进行解析或反序列化。这里有数百篇关于如何做任何一个的帖子。

标签: c# json list


【解决方案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; }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-24
    • 2013-11-14
    • 1970-01-01
    • 2020-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多