Java Talend的JSON解析器

Java Talend的JSON解析器,java,json,talend,Java,Json,Talend,我需要一些帮助来设计在Talend作业(Java作业,而不是Perl)中解析JSON文档的策略。我正在使用Talend版本:5.0.2,在Mac上开发,计划在Linux机器上运行 不幸的是,由于文件的格式,我无法使用tFileInputJSON组件——每个文件包含数百个JSON文档,一个完整的JSON文档占据了文件中的一行。我认为正确的解决方案是逐行读取文件,然后将其传递到JSON解析器,然后将结果发送到作业的其余部分 在我看来,我的选择是: a) 将行输入发送到某种Java JSON解析器。如

我需要一些帮助来设计在Talend作业(Java作业,而不是Perl)中解析JSON文档的策略。我正在使用Talend版本:5.0.2,在Mac上开发,计划在Linux机器上运行

不幸的是,由于文件的格式,我无法使用tFileInputJSON组件——每个文件包含数百个JSON文档,一个完整的JSON文档占据了文件中的一行。我认为正确的解决方案是逐行读取文件,然后将其传递到JSON解析器,然后将结果发送到作业的其余部分

在我看来,我的选择是:

a) 将行输入发送到某种Java JSON解析器。如果这是我需要采取的策略,我想了解一些关于如何处理输出和获取数据的建议

b) 查找解析JSON文档的Talend组件,但该组件位于流中,而不是在有效JSON格式的单个文件中

我已经搜索了这个组件,但似乎找不到它。从我的搜索中,似乎连tFileInputJSON组件都相对较新

我肯定知道这是Java非常容易做到的事情。我的问题是在Talend框架内同步整个过程。

有人对我下一步该转向哪里有什么建议吗


提前谢谢

逐行读取文件,并为每行构造一个

final BufferedReader br = new BufferedReader(new FileReader(file));
String line;

while ((line = br.readLine()) != null)         // read until EOF
{
  final JSONObject json = new JSONObject(line);
  ...
}

br.close();

您是否尝试过创建自定义例程?您可以在“代码”下(在左侧的“存储库”窗口中)右键单击例程并创建自定义例程。 这使您可以编写一个Java函数,然后可以从作业中的某个位置(tMap、tJava等)调用该函数。 您可以读取输入文件并在每一行/元素上调用函数,或者调用任何您想要的功能

与任何Java函数一样,例程可以写入文件、打印到屏幕或返回一些列表对象,您可以在另一个tJava、tJavaFlex、tJavaRow或工作中的任何Talend组件中进一步处理这些对象

这可能会让人感觉有点不舒服,但您可以使用自定义例程做很多事情

如果您想一直创建自己的组件,这可能是一个很好的开始:
当然,创建组件要费时得多,但如果您认为将在多个项目/案例中重用此代码,则可能会很有用。

greg--感谢您的帮助。我想我的问题还不够清楚。我真的需要帮助把这种功能放到talend组件框架中——这是我目前正在努力解决的问题。我将编辑我的postAlright--这似乎是一个很好的探索方向--尝试一下。我会回来报到的!谢谢。虽然我最终接受了泰伦德·福吉的建议,但我接受了这个答案——谢谢你的帮助。我设法制定了一套工作程序,并认为这是一个很好的方向。再次感谢大家。嘿,大家好——我最终同意了塔伦德福吉公司的人提供的答案——虽然我接受了莱恩的建议,但塔伦德福吉公司建议的更为老练的方法现在已经帮我完成了任务。