如何根据输入字符串从嵌套JSON中获取对应商家或武器的相关数据?
实现方案
以下以JavaScript为例实现该查询逻辑,其他编程语言思路一致:
核心思路
- 首先判断输入值是否为预设的两个商家名
blacksmith或merchant,匹配成功直接返回对应商家的全量商品数据 - 若不是商家名,遍历所有商家下的全部武器,匹配武器
name字段与输入值一致的条目,匹配成功返回该武器的完整属性 - 未匹配到任何内容时可返回自定义错误提示
完整实现代码
// 原始数据源 const shopData = { "blacksmith": { "sword": { "name": "Altar of skies", "description": "A really powerful sword", "rarity": 5 }, "bow": { "name": "Hell's string", "description": "A really powerful bow", "rarity": 4 }, "spear": { "name": "Heart piercer", "description": "A really powerful spear", "rarity": 5 } }, "merchant": { "sword": { "name": "Wind's wand", "description": "A really powerful sword", "rarity": 5 }, "bow": { "name": "Heaven's string", "description": "A really powerful bow", "rarity": 4 }, "spear": { "name": "Digger", "description": "A really powerful spear", "rarity": 5 } } } // 查询函数 function queryShop(inputStr) { // 优先匹配商家名 const merchantList = Object.keys(shopData) if (merchantList.includes(inputStr)) { return { [inputStr]: shopData[inputStr] } } // 匹配武器名称 for (const merchant of Object.values(shopData)) { for (const weapon of Object.values(merchant)) { if (weapon.name === inputStr) { return weapon } } } // 无匹配结果 return { "msg": "未找到对应商家或武器信息" } }
测试示例
// 测试示例1:输入商家名 console.log(queryShop("merchant")) // 输出与示例1一致的商家全量数据 // 测试示例2:输入武器名 console.log(queryShop("Altar of skies")) // 输出与示例2一致的武器属性数据
内容的提问来源于stack exchange,提问作者QZAK
相关产品推荐
相关产品推荐

