数组与字典(JSON)通过字符串快捷取值

简介: 数组与字典(JSON)通过字符串快捷取值
  • 有的情况下,需要通过一个字符串快捷获取到 Json 或 数组Json 中指定对象的值,比如:
<script>
  // -------------------------- Json 测试
  // 数据
  const json = {
    a: 'a',
    b: {
      c: 'c',
      d: [{
        e: 'e'
      }],
      f: [[{
        g: 'g'
      }]]
    }
  }
  // 调用
  console.log(GetValue(json, 'b.d[0]')) // {e: 'e'}
  console.log(GetValue(json, 'b.f[0][0].g')) // g
  console.log(GetValue(json, 'b.f[0[0.g')) // g
  console.log(GetValue(json, 'b.f]0]0.g')) // g
  console.log(GetValue(json, 'b.f.0.0.g')) // g
  // -------------------------- Array 测试
  // 数据
  const arr = [
    {
      a: 'a',
      b: [{
        c: 'c',
        d: {
          e: 'e'
        }
      }]
    }
  ]
  // 调用
  console.log(GetValue(arr, '[0].b[0].d.e')) // e
  console.log(GetValue(arr, '0.b.0.d.e')) // e
</script>
  • 封装方法
<script>
  // 获取值
  function GetValue(obj, key) {
    // 当前值
    var value = undefined
    // 是否有值
    if (obj && key) {
      // 赋值
      value = obj
      // 分析大括号
      if (key.includes('[') || key.includes(']')) {
        // 替换符号
        if (key.includes('[')) {
          key = key.replace(new RegExp('\\[', "gm"), '.')
          key = key.replace(new RegExp('\\]', "gm"), '')
        } else {
          key = key.replace(new RegExp('\\]', "gm"), '.')
        }
      }
      // 拆分
      const keys = key.split('.')
      // 过滤出来可用的 keys
      const newKeys = []
      // 过滤
      keys.forEach(itemKey => {
        // 有值则添加
        if (itemKey.length) { newKeys.push(itemKey) }
      })
      // 取值
      newKeys.some(itemKey => {
        // 直接取值
        if (value) { value = value[itemKey] }
        // 是否停止
        return !value
      })
    }
    // 返回
    return value
  }
</script>


相关文章
|
5月前
|
JSON JavaScript 前端开发
JavaScript实现字符串转json对象的方法
JavaScript实现字符串转json对象的方法
|
4月前
|
XML JSON 前端开发
json字符串CSS格式化
完成以上步骤后,你便能在网页中看到格式化后的JSON数据,它们将按照CSS定义的样式进行展示,使数据更易于阅读和理解。通过有效地结合JSON和CSS,你可以创建出更加丰富且易于交互的网页内容。
218 64
|
3月前
|
JSON 前端开发 JavaScript
json字符串如何转为list对象?
json字符串如何转为list对象?
428 7
|
4月前
|
XML JSON 前端开发
json字符串CSS格式化
json字符串CSS格式化
73 5
|
4月前
|
JSON 数据格式 Python
6-1|Python如何将json转化为字符串写到文件内 还保留json格式
6-1|Python如何将json转化为字符串写到文件内 还保留json格式
|
5月前
|
存储 JSON JavaScript
使用 Python 将字典转换为 JSON
【8月更文挑战第27天】
80 2
|
5月前
|
JSON Java 数据格式
Java系列之:生成JSON字符串
这篇文章介绍了两种在Java中生成JSON字符串的方法:使用`JSONObject`类及其`toJSONString`方法来动态生成,以及手动拼接字符串的方式来创建JSON格式的字符串。
Java系列之:生成JSON字符串
|
5月前
|
JSON Go 数据格式
Go实现json字符串与各类struct相互转换
文章通过Go语言示例代码详细演示了如何实现JSON字符串与各类struct之间的相互转换,包括结构体对象生成JSON字符串和JSON字符串映射到struct对象的过程。
43 0
|
5月前
|
SQL JSON 关系型数据库
"SQL老司机大揭秘:如何在数据库中玩转数组、映射与JSON,解锁数据处理的无限可能,一场数据与技术的激情碰撞!"
【8月更文挑战第21天】SQL作为数据库语言,其能力不断进化,尤其是在处理复杂数据类型如数组、映射及JSON方面。例如,PostgreSQL自8.2版起支持数组类型,并提供`unnest()`和`array_agg()`等函数用于数组的操作。对于映射类型,虽然SQL标准未直接支持,但通过JSON数据类型间接实现了键值对的存储与查询。如在PostgreSQL中创建含JSONB类型的表,并使用`-&gt;&gt;`提取特定字段或`@&gt;`进行复杂条件筛选。掌握这些技巧对于高效管理现代数据至关重要,并预示着SQL在未来数据处理领域将持续扮演核心角色。
71 0
|
5月前
|
JSON JavaScript 数据格式
Jquery 将 JSON 列表的 某个属性值,添加到数组中,并判断一个值,在不在数据中
Jquery 将 JSON 列表的 某个属性值,添加到数组中,并判断一个值,在不在数据中
88 0

热门文章

最新文章