【问题标题】:How to Validate Duplicate Key values in JSON request如何验证 JSON 请求中的重复键值
【发布时间】:2021-03-19 13:59:46
【问题描述】:
{
  "number": 1165,
  "lineItems": [{
    "itemId": 1,
    "dynamicfields": {
      "styleId": "V-Neck",
      "style": "T-SHIRTS",
      "cost": 30
    }
  },
  {
    "itemId": 2,
    "dynamicfields": {
      "styleId": "V-Neck",
      "style": "T-SHIRTS",
      "cost": 30
    }
  }]
}

如何验证两个不同项目 ID 的动态字段是否相同?我需要显示验证消息,说明不允许重复的动态字段。

我已经完成了一些 RND,但我发现 JSON 键重复但我需要键值重复检查。

【问题讨论】:

  • 这是 ASP.NET Core 还是 ASP.NET(框架)。请适当标记。
  • 您必须更好地定义您的需求。 确切地说是什么“重复的动态字段”?你的意思是这个有效载荷应该给出一个错误,因为 itemId 1 的 all 字段在 itemId 2 中重复?和/或他们的价值观?这将需要自定义验证。
  • 这需要工作,问题含糊不清
  • 是的,你是对的@CodeCaster,它必须给出错误,因为 itemId 1 的所有字段都存在于 itemId 2 中。它检查了 ItemId 1 和 ItemId 2 的所有字段。
  • 反序列化,获取所有不允许重复的项目。对 unic 字段进行分组和计数。如果一个是>1,那么你可以显示你想要的。

标签: c# asp.net-core asp.net-core-webapi


【解决方案1】:

这是一个检查 json 数据的演示。

型号:

public class ModelB{
        public int number { get; set; }
        public List<LineItem> lineItems { get; set; }
    }
    public class LineItem
    {
        public int itemId { get; set; }
        public Dynamicfields dynamicfields { get; set; }

    }
    public class Dynamicfields {
        public string styleId { get; set; }
        public string style { get; set; }
        public int cost { get; set; }
    }

行动:

 public string CheckRepeat([FromBody]ModelB modelB)
        {

            for (int i = 0; i < modelB.lineItems.Count() - 1; i++)
            {
                if (modelB.lineItems.Where(l => JsonConvert.SerializeObject(l.dynamicfields) == JsonConvert.SerializeObject(modelB.lineItems[i].dynamicfields)).Count() > 1)
                {
                    return "duplicate dynamic fields should not allow";
                }
            }
            return "";
        }

结果:

如果你得到jsondata,你可以将它转换为ModelB:

ModelB modelB=JsonConvert.DeserializeObject<ModelB>(jsondata);

【讨论】:

    猜你喜欢
    • 2019-06-09
    • 2020-03-14
    • 2021-06-28
    • 1970-01-01
    • 2023-04-05
    • 2016-06-18
    • 1970-01-01
    • 2017-10-18
    • 2023-01-21
    相关资源
    最近更新 更多