我正在做一个天才工作,该工作发出HTTP GET请求以获取多个PDF文档。该请求返回一个JSON文件,该文件包含:documentDate和documentLink。我想从documentDate获取最新的documentLink,并使用FileFetch组件上载该文档,文件名是“ Document_1”,如果只有一个最新日期的文档。如果2个文档具有最新日期,则FileFetch组件应上传2个文档,其中一个文件名为“ Document_1”,另一个为“ Document_2”。我不确定如何循环JSON文件以获取最新日期并命名该文档( s)
到目前为止我所做的:
tHTTPRequest_1 --> tExtractJSONFields_1 --> tXMLMap_1 --> tFileFetch_1
这可以上传一个文件,但是没有检查最新的documentDate或tFileFetch_1组件中文件名的命名。
返回的JSON如下所示:
{
"documents": [
{
"documentDate ": 200119,
"documentLink": "someLink1",
},
{
"documentDate ": 200119,
"documentLink": "someLink2",
},
{
"documentDate ": 150119,
"documentLink": "someLink3",
}
]
}
你们对如何解决这个问题有任何想法吗?
答案 0 :(得分:1)
我相信您正在寻找类似于以下内容的东西:
工作的第一部分包括:
tFileInputJson(或者您的情况下为tHttpRequest1)-> tSetGlobalVar-> tExtractJsonFields-> tJavaRow
tHttpRequest1将获取JSON响应(可以排序或不排序)
tsetGlobalVar将JSON保存在要在第二部分中使用的全局变量中。
tExtractJson将从每个JSON数组条目中提取DocumentDate。
tJavaRow将包含Java逻辑,用于比较不同文档中的日期,并在全局变量中设置最大日期:
String maxDate = (String) globalMap.get("MaxDate");
if (maxDate != null && !maxDate.trim().isEmpty() )
//Some Logic here to take the max i.e. Convert it to proper date format and compare them.
globalMap.put("MaxDate", *comparedMaxDate*);
else
globalMap.put("MaxDate", row4.DOCDATE);
完成后,在我们的全局变量中,我们将获得原始的JSON响应和最大/最近的日期。
第一部分(SubJob)完成后将运行的第二部分包括:
tJava-> tExtractJsonFields-> tMap-> tFileFetch
tJava将从第一部分中设置的全局变量中简单地获取JSON消息和MaxDate。
tExtractJsonFields将为每个数组条目提取documentLink和documentDate,并将它们沿最大日期传递给tMap组件。
tMap组件将仅在documentDate和最大日期之间进行比较,并检查是否等于将documentLink传递给tFileFetch,否则它将忽略它。
这允许您仅发送具有最新日期的文档链接。
希望这会有所帮助,而且很清楚。