You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Jira Server Scriptrunner中获取原始单行描述解析Markdown表为JSON

解决Jira Scriptrunner中获取描述原始带\r\n字符串的问题

我需要用Scriptrunner for Jira Server(Groovy/Java)把Jira问题描述里的Markdown表格转换成指定格式的JSON字符串,表格结构固定,对应的正则表达式已经确定。通过REST API查看描述字段时,它是包含\r\n的单行格式,但调用issue.getDescription()获取时,\r\n被解析成了实际换行,导致正则无法匹配。请问怎么获取原始的带\r\n的单行字符串让正则生效?当前使用的代码片段如下:

import com.atlassian.jira.component.ComponentAccessor
import java.io.IOException
import com.atlassian.jira.issue.Issue
import groovy.json.*
import org.apache.log4j.Level

import java.util.regex.Matcher;
import java.util.regex.Pattern;

log.setLevel(Level.INFO);

def issue = issueManager.getIssueObject('PTIJ-68')

def description_raw = issue.getDescription()

log.info("issue.getDescription() = ${issue.getDescription().toString()}")

解决方案

issue.getDescription()返回的是经过Jira渲染处理后的文本,换行符已被转换为实际换行,无法满足正则匹配需求。要获取保留\r\n的原始存储值,需通过字段管理器获取描述系统字段,再调用getOriginalValue()方法:

import com.atlassian.jira.component.ComponentAccessor
import org.apache.log4j.Level

log.setLevel(Level.INFO);

def issueManager = ComponentAccessor.getIssueManager()
def issue = issueManager.getIssueObject('PTIJ-68')

// 获取描述系统字段实例
def fieldManager = ComponentAccessor.getFieldManager()
def descriptionField = fieldManager.getSystemField(com.atlassian.jira.issue.fields.SystemField.ID_DESCRIPTION)

// 获取原始存储值,保留\r\n
def descriptionRaw = issue.getOriginalValue(descriptionField)

log.info("原始描述值(带\\r\\n): ${descriptionRaw}")

说明

  • getOriginalValue()方法直接返回字段在数据库中存储的原始字符串,不会对换行符做解析转换,得到的格式和REST API返回的一致,能确保正则表达式正常匹配。
  • 也可以用issue.getFieldValue(descriptionField)替代getOriginalValue(),但前者在字段有修改历史时可能返回经过处理的值,getOriginalValue()更稳定可靠。

内容的提问来源于stack exchange,提问作者Odyseus_v4

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 22:43:16