您好,我使用 Talend ESB 7.2,并尝试使用 tRest Response
\n\n我已经使用 tJsonExtractField 提取 Json \n
在“metas”字段中,我有另一个 json 字符串,我尝试将此字符串提取为数组(具有键值关联)。
\n\n元字段示例
\n\n{ \n "482f75dd-a8e4-4f5c-80f0-85b5a7eeb340":[ \n "ind\xc3\xa9termin\xc3\xa9"\n ],\n "d8cac586-2d64-4fe6-bdf4-91a5bac3541e":[ \n "Id system"\n ],\n "b17baa47-2aa4-4959-a4f1-073f97833ba2":[ \n "Intranet_T\xc3\xa9l\xc3\xa9_services_Web"\n ],\n "df35ac57-90eb-4e7f-af56-3f50be808ee1":[ \n "ind\xc3\xa9termin\xc3\xa9"\n ],\n "046f1767-f303-4f89-bed6-7c58dab5f47b":[ \n "ind\xc3\xa9termin\xc3\xa9"\n ],\n "ed979530-1dcc-4f48-853c-9dc43ebfc92d":[ \n "ind\xc3\xa9termin\xc3\xa9"\n ],\n "a19f08a9-edf1-489b-9fb3-17a6335df112":[ \n "ind\xc3\xa9termin\xc3\xa9"\n ],\n "60911596-67e7-4caf-afa1-67ff90c8fa8b":[ \n "ind\xc3\xa9termin\xc3\xa9"\n ],\n "0dee3ca9-7962-4ee5-bc02-89d80e315072":[ \n "saas"\n ],\n "4e44268d-0231-4d1d-8e6d-13580dc89b31":[ \n "ind\xc3\xa9termin\xc3\xa9"\n ],\n "0fd60a21-0bb4-4e3f-a203-8cef11ad3149":[ \n "ind\xc3\xa9termin\xc3\xa9"\n ],\n "7c4b6cb3-1918-4ec5-85dc-add60186d29b":[ \n "ind\xc3\xa9termin\xc3\xa9"\n ],\n "48657111-f80f-4bd1-842d-0ce2c4a044b6":[ \n "ind\xc3\xa9termin\xc3\xa9"\n ],\n "6061a25d-3aaf-d58f-81a4-ad38878d2952":[ \n "ind\xc3\xa9termin\xc3\xa9"\n ]\n}\nRun Code Online (Sandbox Code Playgroud)\n\n编辑 1:Json.
\n\n我给你举了 2000 个项目的 2 个例子:
\n\n[ \n { \n "icon":"fa fa-th",\n "infra":false,\n "dateMaj":1556582400000,\n "meta":{ \n "482f75dd-a8e4-4f5c-80f0-85b5a7eeb340":[ \n "ind\xc3\xa9termin\xc3\xa9"\n ],\n "d8cac586-2d64-4fe6-bdf4-91a5bac3541e":[ \n "Abelium"\n ],\n "b17baa47-2aa4-4959-a4f1-073f97833ba2":[ \n "ind\xc3\xa9termin\xc3\xa9"\n ],\n "df35ac57-90eb-4e7f-af56-3f50be808ee1":[ \n "Hyperfile"\n ],\n "046f1767-f303-4f89-bed6-7c58dab5f47b":[ \n "ind\xc3\xa9termin\xc3\xa9"\n ],\n "ed979530-1dcc-4f48-853c-9dc43ebfc92d":[ \n "ind\xc3\xa9termin\xc3\xa9"\n ],\n "a19f08a9-edf1-489b-9fb3-17a6335df112":[ \n "ind\xc3\xa9termin\xc3\xa9"\n ],\n "60911596-67e7-4caf-afa1-67ff90c8fa8b":[ \n "ind\xc3\xa9termin\xc3\xa9"\n ],\n "0dee3ca9-7962-4ee5-bc02-89d80e315072":[ \n "ind\xc3\xa9termin\xc3\xa9"\n ],\n "4e44268d-0231-4d1d-8e6d-13580dc89b31":[ \n "Enfance"\n ],\n "0fd60a21-0bb4-4e3f-a203-8cef11ad3149":[ \n "ind\xc3\xa9termin\xc3\xa9"\n ],\n "7c4b6cb3-1918-4ec5-85dc-add60186d29b":[ \n "ind\xc3\xa9termin\xc3\xa9"\n ],\n "48657111-f80f-4bd1-842d-0ce2c4a044b6":[ \n "ind\xc3\xa9termin\xc3\xa9"\n ],\n "6061a25d-3aaf-d58f-81a4-ad38878d2952":[ \n "19-LOG-037",\n "19-LOG-042",\n "19-LOG-043"\n ]\n },\n "history":{ \n\n },\n "id":"60d62577-e852-4f1c-8e33-19f64a38c511",\n "label":"DOMINO Web",\n "cartoVersion":"3.15.10",\n "code":"",\n "description":"My app 1 ",\n "teamleader":"nicolas.gentil@abc.com",\n "businesses":[ \n "e99164a0-c331-4fc0-9f90-af47e535b2c7",\n "94f526e9-f983-4278-99ed-59de62619cee",\n "d72828f9-2dd2-4ca7-bcd1-f22923ad09b3"\n ]\n },\n { \n "icon":"fa fa-th",\n "infra":false,\n "dateMaj":1521676800000,\n "meta":{ \n "482f75dd-a8e4-4f5c-80f0-85b5a7eeb340":[ \n "ind\xc3\xa9termin\xc3\xa9"\n ],\n "d8cac586-2d64-4fe6-bdf4-91a5bac3541e":[ \n "Id system"\n ],\n "b17baa47-2aa4-4959-a4f1-073f97833ba2":[ \n "Intranet_T\xc3\xa9l\xc3\xa9_services_Web"\n ],\n "df35ac57-90eb-4e7f-af56-3f50be808ee1":[ \n "ind\xc3\xa9termin\xc3\xa9"\n ],\n "046f1767-f303-4f89-bed6-7c58dab5f47b":[ \n "ind\xc3\xa9termin\xc3\xa9"\n ],\n "ed979530-1dcc-4f48-853c-9dc43ebfc92d":[ \n "ind\xc3\xa9termin\xc3\xa9"\n ],\n "a19f08a9-edf1-489b-9fb3-17a6335df112":[ \n "ind\xc3\xa9termin\xc3\xa9"\n ],\n "60911596-67e7-4caf-afa1-67ff90c8fa8b":[ \n "ind\xc3\xa9termin\xc3\xa9"\n ],\n "0dee3ca9-7962-4ee5-bc02-89d80e315072":[ \n "saas"\n ],\n "4e44268d-0231-4d1d-8e6d-13580dc89b31":[ \n "ind\xc3\xa9termin\xc3\xa9"\n ],\n "0fd60a21-0bb4-4e3f-a203-8cef11ad3149":[ \n "ind\xc3\xa9termin\xc3\xa9"\n ],\n "7c4b6cb3-1918-4ec5-85dc-add60186d29b":[ \n "ind\xc3\xa9termin\xc3\xa9"\n ],\n "48657111-f80f-4bd1-842d-0ce2c4a044b6":[ \n "ind\xc3\xa9termin\xc3\xa9"\n ],\n "6061a25d-3aaf-d58f-81a4-ad38878d2952":[ \n "ind\xc3\xa9termin\xc3\xa9"\n ]\n },\n "history":{ \n\n },\n "id":"066a3fce-79e3-4a27-88c1-5217f2cd33f5",\n "label":"Id system",\n "cartoVersion":"3.15.10",\n "code":"",\n "description":"1 screen",\n "teamleader":"claude.dibus@abc.com",\n "businesses":[ \n "8cb8cb38-084f-4962-bd97-dc80b4d20880"\n ]\n }\n]\nRun Code Online (Sandbox Code Playgroud)\n\n编辑2:预期。\n对于输出,我找不到可以做什么,但如果我可以转换为有效的 json 结构将有帮助,例如:
\n\n{ \n "meta":[ \n { \n "id":"482f75dd-a8e4-4f5c-80f0-85b5a7eeb340",\n "value":[ \n "ind\xc3\xa9termin\xc3\xa9"\n ]\n },\n { \n "id":"d8cac586-2d64-4fe6-bdf4-91a5bac3541e",\n "value":[ \n "Id system"\n ]\n }\n ]\n}\nRun Code Online (Sandbox Code Playgroud)\n\n感谢帮助
\n在tLibraryLoad组件中加载json-simple jar 并导入所需的库(在高级设置中)。
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
Run Code Online (Sandbox Code Playgroud)
在tJavaFlex组件中,您可以处理数据输入(如下所示onlyMet)
JSONObject job = new JSONObject();
JSONParser parser = new JSONParser();
try {
//-- Parsing et prepare result
List<JSONObject> resultList = new ArrayList<>();
JSONObject jsonObjects = (JSONObject) parser.parse((String)onlyMet.metas);
jsonObjects.keySet().parallelStream().forEach(entry -> {
JSONObject rjo = new JSONObject();
rjo.put("id", entry);
rjo.put("value", jsonObjects.get(entry));
// System.out.printf("- meta %s : %s \n", entry, jsonObjects.get(entry)); // for debug if needed
resultList.add(rjo);
});
// Outpout the result
onlyOut.metas = resultList.toString();
} catch (final Exception e){
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)