2016-06-16 37 views
-1

我想解析Java中的JSON日志文件。 我完成了类和数据存储。解析Java中的Json日志文件的数据结构

我只需要过滤它,并存储在适当的数据结构,以便我不需要一次又一次地访问该文件。

下面是我的日志文件的例子:

{ “名”: “@公司”, “主机名”: “ABC”, “PID”:18624, “级别”:30, “loggerObject”:{“feature”:“VC”,“module”:“VIDEO”, “level”:“INFO”,“logTime”:“16:32:46”, “userName”:“xyz” “courseName”: “16June2016”}}

我需要与4个参数

    过滤
  1. 等级
  2. 模块
  3. courseName
  4. 的userName

这些水平可以是20或30和模块可以是视频或音频。 coursename和用户名可以是任何东西。

如何设计/使用数据结构来存储这些数据并降低其搜索复杂度?

+0

为什么不将日志提供到Mongo数据库并通过NoSQL查询查询它们? –

+0

Java在['javax.json'](http://docs.oracle.com/javaee/7/api/javax/json/package-summary.html)包中包含内置的JSON API。 – 4castle

+0

我会说转储它为优秀。 你将拥有你需要的一切:) –

回答

0

您可以使用JsonReader解析JSON字符串,然后使用JsonObject访问您需要的字段。从那里你可以存储你需要的数据。

JsonObject log = Json.createReader(new FileReader("log-file.txt")) 
        .readObject() 
        .getJsonObject("loggerObject"); 

String level  = log.getString("level"), 
     module  = log.getString("module"), 
     courseName = log.getString("courseName"), 
     userName = log.getString("userName");