在(SQLite)数据库中解析谷歌位置历史

Posted

技术标签:

【中文标题】在(SQLite)数据库中解析谷歌位置历史【英文标题】:Parsing Google Location History in a (SQLite) Database 【发布时间】:2018-08-11 05:58:49 【问题描述】:

我正在尝试解析您在从 Google Takeout 下载个人位置历史记录并将其放入 android 应用程序中的本地数据库时收到的非常大的 JSON 文件(对我来说大约 100MB,约 400 万行)。

JSON 文件的结构类似于this,我在Pastebin 上放了一个非常小的样本来显示结构。


    "locations" : [ 
      "timestampMs" : "1518722738911",
      "latitudeE7" : 123456789,
      "longitudeE7" : 123456789,
      "accuracy" : 21
    , 
      "timestampMs" : "1518722617339",
      "latitudeE7" : 123456789,
      "longitudeE7" : 123456789,
      "accuracy" : 21,
      "activity" : [ 
        "timestampMs" : "1518722603634",
        "activity" : [ 
          "type" : "TILTING",
          "confidence" : 100
         ]
      , 
        "timestampMs" : "1518722660455",
        "activity" : [ 
          "type" : "STILL",
          "confidence" : 55
         ]
       ]
     ]

当在 Java 中使用 GSON 解析这个时,你会得到一个 LinkedTreeMap。我知道 GSON 不是最快的解析器,但这是另一个问题。

将所有 JSON 数据存储到 SQLite 数据库中的目的是使其更快地可用并对其进行分析,因此我希望数据尽可能实用。

我尝试创建两个单独的表,一个用于简单的时间戳及其经度和经度,另一个用于与时间戳本身相关的活动。

但是,我无法完全理解如何正确地遍历此 TreeMap,将这些条目转换为简单的行,因为它与许多子数组相当混乱。

SQLite 甚至是正确的数据库,还是我应该为这类数据使用其他东西?你会如何解析这样的文件?

非常感谢任何提示或建议,谢谢。

【问题讨论】:

【参考方案1】:

您可以使用 http://www.jsonschema2pojo.org/ 自动将 Json 转换为 Pojo。

【讨论】:

以上是关于在(SQLite)数据库中解析谷歌位置历史的主要内容,如果未能解决你的问题,请参考以下文章

Swift中SQLite使用2

多玩YY聊天记录解析全过程

需要帮助从 SQLite 数据库中获取数据

从 Google 位置历史记录下载 KML 数据的当前 URL?

如何创建像谷歌位置历史这样的安卓时间线视图?

玩转SQLite系列SQLite数据库应用案例实现历史搜索记录