【问题标题】:how to check if a number is present a JSON string?如何检查数字是否存在 JSON 字符串?
【发布时间】:2018-08-09 03:51:28
【问题描述】:

我有一个号码,chNumber 如下所示

“1499094567”

它们是 10 万个,例如 110000,json 字符串,他们是否有最有效的方法来检查这个数字是否完全完整,呈现这 110000 个 json 字符串?

我尝试使用 Java String contains 方法,它运行良好,但严重的问题是,例如,如果一个 JSON 字符串包含数字“8981499094567123”,如果你看到这个数字有上面的数字那么 contains 方法正在返回 true ,但它不应该返回,我们想要返回 JSON,其中包含整个目标数字,并且完整,

我尝试使用 jackson lib,但使用 String 包含我使用的工作最多需要 15 到 20 分钟,但使用 Jackson 需要花费超过 1 小时,所以任何人都可以建议如何进行此搜索。

注意:我有近 500 到 600 个目标数字,每次搜索 110000 个 JSON 字符串

我也用过正则表达式,也太费时间了

【问题讨论】:

  • 如果你知道 JSON 的格式,也许你可以尝试做一些正则表达式(虽然正则表达式也可能需要很长时间)。您也可以尝试搜索: 1499094567, 而不是1499094567,注意额外的冒号和后面的逗号,假设它是一个值
  • 我尝试了正则表达式和 java mattern 补丁,仍然需要很长时间
  • 是的...正则表达式需要很长时间。试试我上面提到的第二种方法。
  • 数字在 json 中用双引号括起来,所以 1499094567,它不起作用,因为在逗号之前我们需要一个双引号,例如“chNumber”:“1499094567”,这是格式,在这种情况下,“1499094567\”,这可以搜索还是我需要框架的其他字符串?
  • 你应该可以搜索到\"1499094567\" 对吧?或者更好的是,搜索\"chNumber\": \"1499094567\" 的整个字符串。目标字符串越长,使用 Boyer–Moore 字符串搜索算法的搜索速度就越快。

标签: java json search jackson


【解决方案1】:

结合两种方法:

  1. 查找所有包含子字符串的 JSON 文件。我猜他们的数量

  2. 对于这个找到的子集,使用 Jackson 仅过滤那些实际包含所需值的文件,方法是过滤像 8981499094567123 这样的垃圾

【讨论】:

    猜你喜欢
    • 2022-11-28
    • 1970-01-01
    • 1970-01-01
    • 2020-11-29
    • 2011-07-30
    • 1970-01-01
    • 2022-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多