2015-05-29 104 views
-1

我很苦惱我的mongodboutput,因爲我無法弄清楚如何構建我的JSON樹。 基本上我有這個在我行的 「語言」 屬性:Talend JSON結構

Languages##English##fluent##German##beginner## 

我想有:

String delims = "##"; 
String[] tokens = row3.langues.split(delims); 
int i = 0; 
while (i < tokens.length) { 
    if(i%2==0){ 
     row5.langue=tokens[i]; 
    } 
    else{ 
     row5.niveau=tokens[i]; 
    } 
    i++; 
} 

"languages": [ 
      { 
       "language": "English", 
       "level": "fluent" 
      }, 
      { 
       "language": "German", 
       "level": "beginner" 
      } 
     ] 

我已經在tJavaRow嘗試過這種

但我只得到第5行的最後一項,而我想複製行

是否可以在例程或java組件中創建自己的列?

+0

我試着用tNormalize但我不能關聯: 英語 - >流利 德文 - >初學者 –

+0

所以你的問題實際上是如何解析上面的字符串並將其轉換爲mongodb文檔? – Philipp

+0

是的,請看下面我的答案! –

回答

-1

對於那些有興趣的人,我通過在tJavaRow中創建自己的MongoDBOutput來解決這個問題。

以這種方式,我更能夠控制JSON模式的創建。

例如(在tJavaRow):

/*Get the MongoDB connection*/ 
DB db = (DB)globalMap.get("db_tMongoDBConnection_1"); 

/*Get the collection*/ 
DBCollection coll = db.getCollection("cv"); 

/*Create the JSON object*/ 
BasicDBObject doc = new BasicDBObject(); 
doc.append("id", Integer.valueOf(input_row.id)); 
doc.append("personne", input_row.personne); 
doc.append("position", input_row.position); 
BasicDBList langues= new BasicDBList(); 
    String delim="##"; 
    String[] tokens = input_row.langues.split(delim); 
    int i = 0; 
    while (i < tokens.length) { 
     if(i%2==0){ 
      res.add(new BasicDBObject("langue",tokens[i]).append("niveau",tokens[i+1])); 
     } 
     i++; 
    } 
doc.append("langues", langues); 

/*Insert in collection*/ 
coll.insert(doc); 

我在MongoDB中對象:

{ 
    "_id": ObjectID("556da6a905f34ffea3e3dbbe"), 
    "id": 1, 
    "personne": "Paul Dupont", 
    "position": "Consultant BI", 
    "age": "23 ans", 
    "langues": [ 
     { 
      "langue": "Anglais", 
      "niveau": "courant" 
     }, 
     { 
      "langue": "Allemand", 
      "niveau": "intermediaire" 
     } 
    ] 
} 
+0

這不是一個答案。請刪除它並編輯您的問題以添加此新信息。 – Philipp

+0

如前所述,這不是一個答案。我冒昧地將那個_verbatim_複製到你的問題上。如果您需要改進或提供一些額外的細節,請隨時編輯*問題*。 –