2

Talendジョブ(PerlではなくJavaジョブ)内でJSONドキュメントを解析するための戦略を考案するための助けが必要です。私はTalendバージョン5.0.2を使用しており、Macで開発しており、Linuxボックスで実行することを計画しています。

残念ながら、ファイルの形式が原因でtFileInputJSONコンポーネントを使用できません。各ファイルには数百のJSONドキュメントが含まれており、完全なJSONドキュメントがファイルの1行を占めています。正しい解決策は、ファイルを1行ずつ読み取り、それをJSONパーサーに渡して、そこから結果を残りのジョブに送信することだと思います。

私が見ているように、私のオプションは次のとおりです。

a)行入力をある種のJavaJSONパーサーに送信します。それが私がとる必要のある戦略であるならば、私は出力をどのように扱いそして得るかについていくつかのアドバイスが欲しいです

b)JSONドキュメントを解析するTalendコンポーネントを見つけますが、有効なJSON形式の単一ファイルではなくフロー内にあります。

このコンポーネントを探しましたが、見つからないようです。私の検索から、tFileInputJSONコンポーネントでさえ比較的新しいようです。

私はこれがJavaが非常に簡単にできることであることを確かに知っています。私の問題は、Talendフレームワーク内ですべてを同期させることです。

私が次にどこを向くべきかについて誰かアドバイスがありますか?

前もって感謝します。

4

2 に答える 2

1

カスタム ルーチンを作成してみましたか? Code (左側のリポジトリ ウィンドウ) の下で、Routines を右クリックし、カスタム ルーチンを作成できます。これにより、ジョブのどこか (tMap、tJava など) から呼び出すことができる Java 関数を作成できます。入力ファイルを読み取って、各行/要素または必要なことを行う関数を呼び出すことができます。

他のJava関数と同様に、ルーチンはファイルへの書き込み、画面への出力、または別のtJava、tJavaFlex、tJavaRow、またはジョブ内のあらゆるTalendコンポーネントでさらに作業できるリストオブジェクトを返すことができます。

少しハックに感じるかもしれませんが、カスタム ルーチンを使用するだけで多くのことができます。

完全に独自のコンポーネントを作成したい場合は、これが良い開始方法かもしれません : http://www.talendforge.org/forum/viewtopic.php?id=17650時間がかかりますが、このコードを複数のプロジェクト/ケースで再利用すると思われる場合に便利です。

于 2012-04-09T00:10:19.680 に答える
0

ファイルを 1 行ずつ読み取り、各行のJSON オブジェクトを作成します。

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();
于 2012-04-04T00:13:12.090 に答える