Merge pull request #7805 from gdicristofaro/jsonArrAttr

fix for json array attribute value
This commit is contained in:
eugene7646 2023-07-11 15:03:12 -04:00 committed by GitHub
commit f9ca9fdb0a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -348,9 +348,8 @@ public class DefaultTableArtifactContentViewer extends AbstractArtifactDetailsPa
case JSON: case JSON:
// Get the attribute's JSON value and convert to indented multiline display string // Get the attribute's JSON value and convert to indented multiline display string
String jsonVal = attr.getValueString(); String jsonVal = attr.getValueString();
JsonObject json = JsonParser.parseString(jsonVal).getAsJsonObject(); JsonElement jsonEl = JsonParser.parseString(jsonVal);
value = toJsonDisplayString(jsonEl, "");
value = toJsonDisplayString(json, "");
break; break;
case STRING: case STRING:
@ -411,7 +410,11 @@ public class DefaultTableArtifactContentViewer extends AbstractArtifactDetailsPa
* @return A multi-line display string. * @return A multi-line display string.
*/ */
private String toJsonDisplayString(JsonElement element, String startIndent) { private String toJsonDisplayString(JsonElement element, String startIndent) {
if (element == null || element.isJsonNull()) {
return "";
} else if (element.isJsonPrimitive()) {
return element.getAsString();
} else if (element.isJsonObject()) {
StringBuilder sb = new StringBuilder(""); StringBuilder sb = new StringBuilder("");
JsonObject obj = element.getAsJsonObject(); JsonObject obj = element.getAsJsonObject();
@ -424,6 +427,26 @@ public class DefaultTableArtifactContentViewer extends AbstractArtifactDetailsPa
returnString = returnString.substring(NEW_LINE.length()); returnString = returnString.substring(NEW_LINE.length());
} }
return returnString; return returnString;
} else if (element.isJsonArray()) {
StringBuilder sb = new StringBuilder("");
JsonArray jsonArray = element.getAsJsonArray();
if (jsonArray.size() > 0) {
int count = 1;
for (JsonElement arrayMember : jsonArray) {
sb.append(NEW_LINE).append(String.format("%s%d", startIndent, count));
sb.append(toJsonDisplayString(arrayMember, startIndent.concat(INDENT_RIGHT)));
count++;
}
}
String returnString = sb.toString();
if (startIndent.length() == 0 && returnString.startsWith(NEW_LINE)) {
returnString = returnString.substring(NEW_LINE.length());
}
return returnString;
} else {
return "";
}
} }
/** /**