如何验证JSON数组各对象的name、age、description字段 无需考虑索引
无索引校验JSON数组对象字段的实现方案
核心实现逻辑
不需要处理数组下标,直接全量遍历数组内所有对象,按以下步骤完成校验即可:
- 先做字段存在性校验:确认每个对象都包含
Name、age、description三个必填字段,空值/不存在直接判定校验失败 - 再做字段格式校验:确认
age为合法数字/数字字符串,Name和description为符合业务要求的字符串格式 - 最后做关联匹配校验(类搜索逻辑):按业务规则验证三个字段的关联关系,示例场景下就是校验
age字段的取值是否和description文本中的年龄描述一致,也可以指定搜索某个Name对应的对象,单独校验其age是否符合预期
代码实现示例(JavaScript)
// 待校验的JSON数组 const targetArray = [ { "Name": "Shobit", "transactionDate": 1623049638000, "age": "18", "description": "My item for new collection addition into system with age 18" }, { "Name": "Neha", "transactionDate": 1623049877000, "age": "20", "description": "My item for new collection addition into system with age 20" } ] /** * 校验函数 * @param {Array} arr 待校验的JSON数组 * @param {String} targetName 可选参数,指定仅校验某个Name对应的对象 * @returns {Boolean} 校验是否通过 */ function validateAgeMatch(arr, targetName = null) { // 直接遍历数组元素,不需要操作索引 for (const item of arr) { // 若指定了搜索目标Name,跳过非目标对象 if (targetName && item.Name !== targetName) continue // 校验必填字段是否存在 if (!item.Name || !item.age || !item.description) { console.log(`对象${item.Name || '未命名'}缺失必填字段,校验失败`) return false } // 校验age字段格式合法性 const ageValue = parseInt(item.age) if (isNaN(ageValue)) { console.log(`对象${item.Name}的age字段格式非法,校验失败`) return false } // 校验age和description的匹配关系 if (!item.description.includes(`age ${item.age}`)) { console.log(`对象${item.Name}的age字段与描述内容不匹配,校验失败`) return false } } console.log('所有校验项通过') return true } // 调用示例 validateAgeMatch(targetArray) // 全量校验所有对象 validateAgeMatch(targetArray, 'Shobit') // 仅搜索校验Name为Shobit的对象age是否匹配
其他编程语言的实现逻辑完全一致:Python用for item in arr、Java用增强for循环for (Object item : arr)都可以直接遍历元素,不需要手动处理索引。
内容的提问来源于stack exchange,提问作者Sobhit Sharma
相关产品推荐
相关产品推荐

