【发布时间】:2021-10-23 04:14:40
【问题描述】:
我是初学者,在验证与数组中的列表具有相同值的对象时遇到问题。问题看起来很简单,但我在操作对象时遇到了麻烦。 我有一个名为 ApprovedLevels 的数组,其中包含一些用户对象,它们是“批准级别”。 但是,有一个错误,有时前端会在“Ordination”对象中向我们发送相同的值,而我需要在后端做的是,每当 Ordination 值等于 ApprovalLevels 列表中的一个时,它需要添加+1,对收到的相同排序值进行一些增量,或跳转到列表中的下一个值。
这是我得到的 Json:
"ApprovalLevels":[
{
"Ordination": 10,
"Users": [
{
"UserId": 116
}
]
},
{
"Ordination": 10,
"Users": [
{
"UserId": 118
}
]
}
]
在下面,我将放置到目前为止我尝试做的所有代码,我使用的技术是 .net 框架 3,并且我也在使用 newtonsoft 来操作、反序列化对象。 在代码中,这个排序是由接收列表的用户完成的:
JArray newLevelsArray = JArray.FromObject(levelsArray.Where(l => l["Id"] == null).ToList());
foreach (JObject newLevelObject in newLevelsArray)
{
BusinessRuleApprovalLevel newLevel = PloomesUtils.JsonToObject<BusinessRuleApprovalLevel>(newLevelObject);
JArray ordinationObj = JArray.FromObject(levelsArray.Where(o => o["Ordination"] != null).ToList());
newLevel.Ordination = (int)ordinationObj;
JObject equalOrdination = levelsArray.FirstOrDefault(eo => eo["Ordination"] != null && (int)eo["Ordination"] == newLevel.Ordination) as JObject;
if (JObject.Equals(ordinationObj, equalOrdination))
{
BusinessRuleApprovalLevel deletedOrdination = BusinessRuleApprovalLevel.Find(newLevel.Ordination);
BusinessRuleApprovalLevel.Remove(deletedOrdination);
SaveChanges();
}
newLevel.Ordination = (int)ordinationObj;
newLevel.BusinessRuleId = ruleId;
BusinessRuleApprovalLevel.Add(newLevel);
SaveChanges();
if (newLevelObject.Property("Users") != null && newLevelObject["Users"].Type != JTokenType.Null)
UpdateApprovalLevelUsers(newLevel.Id, (JArray)newLevelObject["Users"]);
}
【问题讨论】:
-
对不起,但我在“Ordination”中看不到相同的值,我什至看不到 ordination 里面有什么。你能举两个例子来解释一下:你有什么和你想要什么。
-
这个“ApprovalLevels”数组已经是示例,您将看到对象“Ordination”内部包含值 10,然后具有不同用户的下一个值也具有值 10。我需要要做的是处理两个用户都包含相同“Ordination”值的情况。我希望我能更好地解释它并感谢您的回答
-
谢谢,你能发布第二个例子吗?你的解释包含的字母太多,我永远都读不完
标签: arrays json .net list json.net