diff options
Diffstat (limited to 'document')
-rw-r--r-- | document/src/main/java/com/yahoo/document/json/JsonSerializationHelper.java | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/document/src/main/java/com/yahoo/document/json/JsonSerializationHelper.java b/document/src/main/java/com/yahoo/document/json/JsonSerializationHelper.java index 8e934001381..afe14cf1e6a 100644 --- a/document/src/main/java/com/yahoo/document/json/JsonSerializationHelper.java +++ b/document/src/main/java/com/yahoo/document/json/JsonSerializationHelper.java @@ -2,9 +2,11 @@ package com.yahoo.document.json; import com.fasterxml.jackson.core.JsonGenerator; +import com.yahoo.document.DataType; import com.yahoo.document.DocumentId; import com.yahoo.document.Field; import com.yahoo.document.PositionDataType; +import com.yahoo.document.PrimitiveDataType; import com.yahoo.document.datatypes.Array; import com.yahoo.document.datatypes.ByteFieldValue; import com.yahoo.document.datatypes.CollectionFieldValue; @@ -186,7 +188,12 @@ public class JsonSerializationHelper { generator.writeStartObject(); for (Map.Entry<K, V> entry : map.entrySet()) { - generator.writeFieldName(entry.getKey().toString()); + K key = entry.getKey(); + DataType keyType = key.getDataType(); + if ( ! (keyType instanceof PrimitiveDataType)) { + throw new IllegalArgumentException("Can't use complex types as keys for map fields. Type: " + keyType); + } + generator.writeFieldName(key.toString()); entry.getValue().serialize(null, fieldWriter); } |