From 84483ca36163de2d05590c67e7a971dba4e58864 Mon Sep 17 00:00:00 2001 From: Luigi Dell'Aquila Date: Fri, 8 Mar 2019 16:55:49 +0100 Subject: [PATCH] Fix array selection on edge traversals in SQL from REST MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit eg. SELECT out()[0..2]:{*} FROM … Resolves: #8778 --- .../orient/core/sql/executor/OResult.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/com/orientechnologies/orient/core/sql/executor/OResult.java b/core/src/main/java/com/orientechnologies/orient/core/sql/executor/OResult.java index 1094a0c1241..f63ea369f21 100644 --- a/core/src/main/java/com/orientechnologies/orient/core/sql/executor/OResult.java +++ b/core/src/main/java/com/orientechnologies/orient/core/sql/executor/OResult.java @@ -8,6 +8,7 @@ import com.orientechnologies.orient.core.record.impl.OBlob; import com.orientechnologies.orient.core.util.ODateHelper; +import java.lang.reflect.Array; import java.util.*; /** @@ -206,8 +207,18 @@ default String toJson(Object val) { jsonVal = "\"" + Base64.getEncoder().encodeToString((byte[]) val) + "\""; } else if (val instanceof Date) { jsonVal = "\"" + ODateHelper.getDateTimeFormatInstance().format(val) + "\""; + } else if (val.getClass().isArray()) { + StringBuilder builder = new StringBuilder(); + builder.append("["); + for (int i = 0; i < Array.getLength(val); i++) { + if (i > 0) { + builder.append(", "); + } + builder.append(toJson(Array.get(val, i))); + } + builder.append("]"); + jsonVal = builder.toString(); } else { - throw new UnsupportedOperationException("Cannot convert " + val + " - " + val.getClass() + " to JSON"); } return jsonVal;