diff --git a/nomad/metainfo/data_type.py b/nomad/metainfo/data_type.py
index d6a05aa5f51bb8e5d6fedced0c11182a2ec36378..0a07f8ae3bd668e9b61ff3454544ad1bbd868e21 100644
--- a/nomad/metainfo/data_type.py
+++ b/nomad/metainfo/data_type.py
@@ -273,10 +273,19 @@ class Primitive(Datatype):
         if value is None:
             return value
 
-        if isinstance(value, pint.Quantity):
+        def extract_magnitude(v):
+            if isinstance(v, (list, tuple)):
+                return [extract_magnitude(x) for x in v]
+
+            if not isinstance(v, pint.Quantity):
+                return v
+
             if self.unit is not None:
-                value = value.to(self.unit)
-            value = value.magnitude
+                v = v.to(self.unit)
+
+            return v.magnitude
+
+        value = extract_magnitude(value)
 
         if self.is_scalar:
             given_type = type(value)