Talend JSON 结构

Talend JSON structure

我正在努力处理我的 mongodb 输出,因为我不知道如何构建我的 JSON 树。 基本上我在行​​的 "Languages" 属性中有这个:

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

我想要:

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

我已经在 tJavaRow 中试过了:

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++;
}

但我只得到第 5 行的最后一个条目,而我想复制这些行

是否可以在例程或 java 组件中创建我自己的列?

对于那些感兴趣的人,我通过在 tJavaRow 中创建自己的 MongoDBOuput 解决了这个问题。

通过这种方式,我可以更好地控制 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"
        }
    ]
}