java - 从 Java JSONArray 解析值
问题描述
我正在使用JSONArray
类从 jira 页面解析一个字段,但我正在以这种格式获取解析的字段:
["com.atlassian.greenhopper.service.sprint.Sprint@4104b49f
[
id=539,
rapidViewId=20,
state=FUTURE,
name=Spring - February 2019 - Dev,
startDate=<null>,
endDate=<null>,
completeDate=<null>,
sequence=539,
goal=<null>
]
"]
我想从中提取名称JSONArray
,但我不知道该怎么做,因为它不是JSON
格式。任何帮助,将不胜感激。
提前致谢。
我的代码:
final IssueField field = jira.getField(ISSUE_SPRINT_ID);
if (field == null) {
log.error("Cannot load Sprint Info for issue {}", jira.getKey());
return "NA";
}
final JSONArray data = (JSONArray) field.getValue();
if (data == null) {
log.error("Cannot load Sprint Info for issue {}", jira.getKey());
return "NA";
}
解决方案
在这里发现了这个可怕的黑客,不是一个很好的黑客,但解决了我的问题:)
/*
* Horrible hack :( - but no other options apparently
* See https://answers.atlassian.com/questions/92681/how-to-get-sprints-using-greenhopper-api
*/
private static final String NAME_FIELD_ATTRIBUTE = "name=";
private String extractSprintName(JSONArray fieldValue) {
try {
String value = (String) fieldValue.get(0);
value = value.substring(value.indexOf(NAME_FIELD_ATTRIBUTE));
return value.substring(NAME_FIELD_ATTRIBUTE.length(), value.indexOf(','));
} catch ( JSONException e) {
return "";
}
}
推荐阅读
- google-chrome - Firefox 和 Chrome 的可访问性树的区别
- bash - 有没有办法从反汇编程序输出中只过滤掉汇编代码?
- python - 新的、干净的 venv 项目(Python 3 /IntelliJ IDEA)中的包要求 - 为什么有?
- reactjs - 如何在拖动标签中使用 onChange 属性?
- c# - c# webapi中如何处理和excel从前端(网站)发送的文件?
- asp.net-core - .net核心中间件自动设置内容类型为application/json;字符集=utf-8
- php - 每个页面上的登录验证询问数据库
- design-patterns - 如何证明程序有层?
- ruby-on-rails - 如何使用 Ruby on Rails 发送电子邮件地址的值?
- javascript - Cloud Function 中的 Dialogflow 会话处理