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:
// Get the attribute's JSON value and convert to indented multiline display string
String jsonVal = attr.getValueString();
JsonObject json = JsonParser.parseString(jsonVal).getAsJsonObject();
value = toJsonDisplayString(json, "");
JsonElement jsonEl = JsonParser.parseString(jsonVal);
value = toJsonDisplayString(jsonEl, "");
break;
case STRING:
@ -411,7 +410,11 @@ public class DefaultTableArtifactContentViewer extends AbstractArtifactDetailsPa
* @return A multi-line display string.
*/
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("");
JsonObject obj = element.getAsJsonObject();
@ -424,6 +427,26 @@ public class DefaultTableArtifactContentViewer extends AbstractArtifactDetailsPa
returnString = returnString.substring(NEW_LINE.length());
}
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 "";
}
}
/**