我有一个宏从JIRA(作为JSON对象)获取整个问题信息并将其打印在Confluence中。但是在Confluence中,新的线条丢失了,格式也变得很糟糕。
这是Jira中的文字(以及它的外观):
报告随后通过ftp发送给Aviva风险管理团队。
Aviva风险团队使用每日报告提取一些数字 以及关于投资组合风险表现的报告。
这是它在JSON中的外观:
报告随后通过ftp发送至Aviva Risk Management 团队。\ r \ n \ r \ nAviva风险团队使用每日报告来提取一些 关于投资组合风险表现的数字和报告。
这是后来印刷的内容:
报告随后通过ftp发送给Aviva风险管理团队。 Aviva风险团队使用每日报告来提取一些数字 以及关于投资组合风险表现的报告。
基本上,我从中得到的是,\n\r
符号丢失或者不能在Confluence中翻译它们的方式。我该如何解决这个问题?
编辑:@Octopus这是代码。
public class FieldinfoMacro implements Macro {
@Override
@SuppressWarnings("unchecked")
// This macro gets the issue's field values from the page's context so you don't have to
// make new requests to Jira for each field seperately
public String execute(Map<String, String> par, String s, ConversionContext conversionContext)
throws MacroExecutionException {
// parameters
String add = (String) par.get("getfield").toLowerCase();
HashMap<String, String> fieldMap = (HashMap<String, String>) conversionContext.getProperty("fieldMap");
JSONObject issue = (JSONObject) conversionContext.getProperty("issueJson");
Object output = null;
Object result = null;
StringBuilder temp = new StringBuilder();
/* if (add.equals("reporter") || add.equals("assignee") || add.equals("account manager")) {
try {
output = issue.getJSONObject("fields").get(fieldMap.get(add));
result = ((JSONObject) output).get("emailAddress");
result = ((String) result).replaceAll("@.*", "");
result = ((String) result).replaceAll("\\W", " ");
} catch (JSONException je) {
je.printStackTrace();
}
} else { */
// get the requested field value from the issue
// there's a handler for the different types of returned data
// i.e. JSONObject, JSONArray, String
try {
output = issue.getJSONObject("fields").get(fieldMap.get(add));
// String handler
if (output instanceof String) {
result = output;
// JSONArray handler (covered different cases)
} else if (output instanceof JSONArray) {
for (int i = 0; i < ((JSONArray) output).length(); i++) {
if (((JSONArray) output).get(i) instanceof JSONObject) {
result = ((JSONArray) output).getJSONObject(i).getString("value");
} else {
if (((JSONArray) output).length() < 2) {
temp.append(((JSONArray) output).getString(i));
} else if (i < ((JSONArray) output).length() - 1) {
temp.append(((JSONArray) output).getString(i) + ", ");
} else temp.append(((JSONArray) output).getString(i));
result = temp;
}
}
// JSONObject handler
} else if (output instanceof JSONObject) {
result = ((JSONObject) output).getString("value");
}
} catch (JSONException je) {
je.printStackTrace();
}
return result.toString();
}
答案 0 :(得分:2)
你不应该担心这个。 JSON
完全能够代表任何UTF-8
个字符。收到JSON字符串后,您肯定会在代码中执行某些操作,从而获得\r\n
个字符的rids。您应该能够通过编写逻辑将\r\n
转换为新行,例如添加<br>
html标记。请在帖子中添加如何从JSON获取数据以在页面中打印
此行从String
中删除所有`\ r \ n' result = ((String) result).replaceAll("\\W", " ");
这就是String字面值没有任何\r
和\n
个字符的原因。请删除该行并进行测试。请注意\W
表示“任何非单词字符”。即排除这些[a-zA-Z0-9_]
个字符的字符。希望这有帮助
答案 1 :(得分:0)
“\ r \ n”是来自Windows&amp; Unix的。使用Confluence,您希望HTML标记用于换行符,因为html将其他换行符视为单个空格。
所以一个简单的result = ((String) result).replace("\r\n", "<br>");
就可以了。