【问题标题】:Regex: Negating a whole word (needed to optimize a file)正则表达式:否定整个单词(需要优化文件)
【发布时间】:2012-05-26 02:30:02
【问题描述】:

我正在尝试为 Android 做一个简单的天气小部件,它只为我的国家(约旦)提供温度。我用于天气记录的网站提供了一个 JSON 文件,其中包含许多国家/地区的国家/地区数据。问题是该文件包含 2500 多个对象,并且解析需要很长时间。因此,由于我实际上需要

This is the URL of the JSON file.

如您所见,每个对象都有四个项目。我需要检查的是“图标”,它指定了该地区的国家。

示例:

{"value":"khalda","icon":"Jordan","label":"khalda","desc":"Amman & Madaba"},

到目前为止,我能想到的是我实际需要的对象的模式。但是,我需要获得那些我不需要能够删除它们的东西。这是模式:\{[^\{]*Jordan*[^\}]*\},(必须对其进行修改,以便在“Jordan”不存在时进行验证,我无法弄清楚。)

非常感谢任何帮助/提示。 谢谢。

【问题讨论】:

  • 即使是这么多的 JSON 也几乎不需要任何时间来解析。你是怎么解析的?如果它使用的是知名库,我认为瓶颈可能是您的互联网连接而不是解析速度。
  • 我使用的是 Java 内置的 JSONArray/JSONObject。 (这是我的参考:java.sun.com/developer/technicalArticles/javame/json-me)编辑:我的互联网连接是 8Mbps。
  • 嗯...好吧,但我只是用 JavaScript 解析了整个事情,它只用了 27 毫秒。我坚持我的声明:)
  • 好的,我可以尝试不同的解析器然后查看结果。 sites.google.com/site/gson 呢?您对 Java 的 JSON 解析器有任何经验吗?
  • 不,实际上,我没有 Java 经验 :) 你有某种可用的分析工具吗?它应该可以帮助您准确缩小问题所在。否则,是时候手动比较一些日期了。

标签: java android regex json


【解决方案1】:

与其匹配和删除您不需要的对象,不如匹配并提取您确实需要的单个(?)对象。它会更快。

(我同意 minitech 的评论。解析 JSON 文件不太可能成为真正的瓶颈。)

【讨论】:

  • 如何根据Java中的特定模式提取文本?
  • 好吧,如果你有一个正则表达式来匹配你需要的国家,你只需要扩展正则表达式来匹配整个json对象。
猜你喜欢
  • 2014-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-23
  • 1970-01-01
  • 2010-11-15
  • 2021-12-30
相关资源
最近更新 更多