[英]jelly: Create a table using JSON object
我正在嘗試構建一個Jenkins Post build plugin
,我必須在其中處理JSON
文件(包含測試結果)並在執行構建后在Jenkins
以tabular format
顯示它。
以下是到目前為止完成的步驟:
JSONElement
。BuildAction
(擴展 Action)以顯示結果。BuildAction
index.jelly
( view
for BuildAction
) 中,嘗試將 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 in 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>
在使用Jelly
從JSON
構建table
時需要幫助。 任何其他實現相同的方式也歡迎(請在建議相同時發布代碼示例)。
注意:也歡迎與Groovy
相關的答案,因為Jenkins
支持Jelly and Groovy
for View
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.