【问题标题】:Is there a way for me to search a JSON array backwards using regex?有没有办法让我使用正则表达式向后搜索 JSON 数组?
【发布时间】:2016-09-22 00:10:23
【问题描述】:

所以我设置了一个类似this 的字符串。那是一个JSON字符串,以这种格式存储数据:

{
    "players": {
        <playerID>: {
            "presets": [{
                "title": <title>,
                "presetId": <id>,
                "preset": {<presetData>},
                "votes": <voteCount>,
                "date": <creationDate>
            }]
        }
}

我希望能够输入一个presetId,并得到一个playerId 作为输出(基本上是找出哪个玩家拥有该id 的预设)。同样的事情可以通过循环遍历每个玩家和每个玩家的预设来实现,并查看该预设是否具有正确的 id,但我需要经常这样做,而且我觉得这会非常昂贵。正则表达式会更好吗?我会用什么样的表达方式?

【问题讨论】:

  • Regex 几乎肯定会更糟。
  • 有那么糟糕吗?也许我可以只循环一次,然后将结果存储在不久的将来。
  • 听起来你在浏览器中,是吗?我只是在看这个库,它可能会做你想做的事。 defiantjs.com 您只需为该查询编写 xpath。

标签: javascript php json regex


【解决方案1】:

正则表达式?不。就停在那里。

您可以做的是首先扁平化数据,或者首先扁平化数据。

[{
 playerId: ...,
 ...
 presetId: ...,
},{
 playerId: ...,
 ...
 presetId: ...,
}]

假设预设 ID 是唯一的,您可以轻松使用array.filterarray.find

var players = flatData.filter(player => player.presetID === ID_TO_FIND);

// or

var player = flatData.find(player => player.presetID === ID_TO_FIND);

【讨论】:

  • 我将如何进行扁平化?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-11
  • 1970-01-01
  • 2023-03-17
  • 2014-01-23
  • 1970-01-01
  • 2013-02-26
相关资源
最近更新 更多