diff --git a/src/vipscore_common/data_utils.py b/src/vipscore_common/data_utils.py
index e0db4b86a933b77d5ef5fbfe1ba60a6f2f911b05..350dac12acd0c5aab98f01234b952a08ac142b29 100644
--- a/src/vipscore_common/data_utils.py
+++ b/src/vipscore_common/data_utils.py
@@ -98,7 +98,10 @@ def get_weather_observations_from_json_list(weather_data: list) -> list:
     """
     retval = []
     for node in weather_data:
-        retval.append(WeatherObservation(**node))
+        if isinstance(node, WeatherObservation):
+            retval.append(node)
+        else:
+            retval.append(WeatherObservation(**node))
     return retval
 
 def get_temp_adjusted_for_base(temp: float, base_temp = 0.0) -> float: