2012-04-03 3 views
2

Talend 작업 (Perl이 아닌 Java 작업) 내에서 JSON 문서를 구문 분석하는 전략을 고안하는 데 도움이 필요합니다. Talend 버전 5.0.2를 사용 중이며 Mac에서 개발 중이며 Linux 상자에서 실행할 계획입니다.Talend 용 JSON 파서

불행히도 내 파일 형식 때문에 tFileInputJSON 구성 요소를 사용할 수 없습니다. 각 파일에는 수백 개의 JSON 문서가 포함되어 있으며, 전체 JSON 문서는 파일에서 한 줄을 사용합니다. 올바른 해결책은 파일을 줄 단위로 읽은 다음 JSON 파서로 전달하고 그 결과를 나머지 작업에 보내는 것입니다. 내가보기로

내 옵션은 다음과 같습니다

A) 자바 JSON 파서 일종의 라인 입력을 보낼 수 있습니다. 그것이 내가 취해야하는 전략이라면 출력을 처리하는 방법에 대한 조언을 원합니다.

b) JSON 문서를 구문 분석하지만 단일 파일과 반대되는 흐름 내에서 Talend 구성 요소를 찾습니다. 유효한 JSON 형식입니다.

이 구성 요소를 검색했지만 찾을 수없는 것 같습니다. 필자의 검색에서 tFileInputJSON 구성 요소조차 비교적 새로운 것 같습니다.

나는 이것이 Java가 꽤 쉽게 할 수있는 어떤 것이라는 것을 확실히 알고 있습니다. 내 문제는 Talend 프레임 워크 내에서 모든 것을 동기화하는 것입니다.

누구든지 다음에 어디에서 조언을 구해야합니까? 사전에

감사합니다.

+0

안녕하세요 모두 - Talend Forge의 사람들이 제공 한 답변으로 끝났습니다. - http://www.talendforge.org/forum/viewtopic.php?pid=82606#p82606 - 내가 만든 동안 progrss와 llaen의 제안, Talend Forge에서 제안 된 더 hackish 접근법은 지금 나를 위해 일을 얻습니다. – badgley

답변

1

맞춤 루틴 만들기를 시도 했습니까? Code (왼쪽의 저장소 창)에서 Routines를 마우스 오른쪽 단추로 클릭하고 사용자 정의 루틴을 작성하십시오. 그러면 작업 (tMap, tJava 등)의 어딘가에서 호출 할 수있는 Java 함수를 작성할 수 있습니다. 입력 파일을 읽고 각 행/요소 또는 원하는 작업을 호출 할 수 있습니다.

Java 함수와 마찬가지로 루틴은 파일에 쓰거나 화면에 인쇄하거나 다른 tJava, tJavaFlex, tJavaRow 또는 작업의 Talend 구성 요소에서 계속 작업 할 수있는 목록 객체를 반환 할 수 있습니다.

약간의 해킹이 느껴질 수도 있지만 맞춤 루틴을 사용하면 많은 일을 할 수 있습니다. 구성 요소를 만드는 것은 훨씬 더 많은 시간이 소요됩니다, 물론 http://www.talendforge.org/forum/viewtopic.php?id=17650 ,하지만 당신은 '당신이 생각하는 경우 유용 할 수 있습니다 :

는 모든 방법을 가서 자신의 구성 요소를 만들려면, 이것은 시작하는 좋은 방법이 될 수 있습니다 여러 프로젝트/경우에이 코드를 재사용 할 것입니다.

+0

좋아 - 이것은 좋은 방향으로 탐구하는 것처럼 보입니다. 다시보고 할 것이다! 감사. – badgley

+0

탈렌드 포지 (Talend Forge)의 제안으로 끝나기는했지만이 답변을 수락합니다. 도움을 주셔서 감사합니다. 나는 일할 루틴을 얻을 수 있었고 그것이 취할 수있는 큰 방향이라고 생각했습니다. 다시 한번 감사드립니다. – badgley

0

줄 단위로 파일을 읽고 각 줄에 JSON Object을 구성하십시오.

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(); 
+0

greg - 일을 시작해 주셔서 감사합니다. 나는 내 질문에 내가 충분히 명확하다고 생각하지 않는다. 이런 종류의 funcationality를 talend 컴포넌트 프레임 워크에 두는 데 정말로 도움이 필요합니다. 지금 당장 힘 쓰고 있습니다. 내 게시물을 편집합니다 – badgley