gpt4 book ai didi

java - jelly:使用 JSON 对象创建表

转载 作者:行者123 更新时间:2023-11-30 06:55:49 27 4
gpt4 key购买 nike

我正在尝试构建一个Jenkins Post构建插件,我必须在其中处理JSON文件(包含测试结果)并以表格格式显示它执行构建后,Jenkins 中的 code> 。

以下是到目前为止已完成的步骤:

  1. 创建了 Jenkins 插件
  2. 能够检索 JSON 文件内容并将其读取为 Google gson JSONElement
  3. 构建 BuildAction(扩展 Action)以显示结果。
  4. 在与BuildAction相对应的index.jelly(BuildActionview)中,尝试显示中的每条记录JSON 文件,作为一行。

JSON 文件示例:

{
"records": [{
"objectProps": {
"OTYPE": "TEST",
"NAME": "testMethodError",

}
},
{
"objectProps": {
"OTYPE": "TEST",
"NAME": "testMethodFail",
}
}]
}

BuildAction 类:

public class BuildAction implements Action {
private JsonElement results;
private Run<?, ?> build;
TaskListener listener;

// this value referred as `it.results` in `index.jelly`
public JsonArray getResults(){
return results.getAsJsonObject().get("records").getAsJsonArray();
}

}

上述BuildAction类的当前index.jelly

<?jelly escape-by-default='true'?>
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:l="/lib/layout">
<l:layout>
<st:include it="${it.build}" page="sidepanel.jelly"/>
<l:main-panel>
<table> Test - Wise Results
<j:forEach items="${it.results}" var="i">
<tr><td>Test case name: ${i}</td></tr>
</j:forEach>
</table>
</l:main-panel>

</l:layout>
</j:jelly>

实际行为:

到目前为止,${results} 值是 JSONArray 类型。 forEach在 jelly 中,我可以使用 var i (语法 ${i})迭代并获取记录。 i 指的是 records JSONArray 中的每条记录。现在,我想使用 i 访问 objectProps.NAME 字段,我不知道 Jelly 中实现相同目的的语法。

预期行为:

我想迭代 JSON 文件中的 records 数组,并将每个 child/jsonObject 作为一个表行(及其值作为相应的列)。

与此类似的内容(访问NAME值):

<j:forEach items="${it.results}" var="i">
<tr><td>Test case name: ${i}."objectProps"."NAME"</td></tr>
</j:forEach>

需要帮助使用 JellyJSON 构建。也欢迎任何其他实现相同目的的方法(请在提出相同建议时发布代码示例)。

注意: Groovy 相关答案也受欢迎,因为 Jenkins 支持 Jelly 和 Groovy for View .

最佳答案

我有兴趣解决您的问题,但可能没有 100% 确定的答案,因为我无法在本地进行测试。

您是否尝试过使用 ${i.objectProps.NAME}${i."objectProps"."NAME"} 代替 ${ i}."objectProps"."NAME"在你的例子中?

您还可以查看 g:evaluate 是否可用,因为 jelly 可能不会在没有明确告诉它这样做的情况下评估您的变量。您可以在 g:evaluate here. 上找到一些文档

关于java - jelly:使用 JSON 对象创建表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41848959/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com