diff --git a/steam-runtime-tools/json-utils.c b/steam-runtime-tools/json-utils.c
index 6131c2f8f016392660ef4238e162d94e9317cb98..1761d59c0982dd81c02426327afbdde74857c9e2 100644
--- a/steam-runtime-tools/json-utils.c
+++ b/steam-runtime-tools/json-utils.c
@@ -98,17 +98,21 @@ _srt_json_object_dup_strv_member (JsonObject *json_obj,
                                   const gchar *placeholder)
 {
   JsonArray *array;
+  JsonNode *arr_node;
   guint length;
   gchar **ret = NULL;
 
   g_return_val_if_fail (json_obj != NULL, NULL);
   g_return_val_if_fail (array_member != NULL, NULL);
 
-  if (json_object_has_member (json_obj, array_member))
+  arr_node = json_object_get_member (json_obj, array_member);
+
+  if (arr_node != NULL && JSON_NODE_HOLDS_ARRAY (arr_node))
     {
       guint j = 0;
 
-      array = json_object_get_array_member (json_obj, array_member);
+      array = json_node_get_array (arr_node);
+
       if (array == NULL)
         return ret;
 
diff --git a/tests/json-utils.c b/tests/json-utils.c
index 2cab98b0f77fb68489dde9eb1b3f60f6b36278a3..3bc22c9c43aa5eabe784ebbc690d7ce4c25b0a86 100644
--- a/tests/json-utils.c
+++ b/tests/json-utils.c
@@ -66,6 +66,7 @@ test_dup_strv_member (Fixture *f,
   g_autoptr(JsonObject) obj = json_object_new ();
   g_autoptr(JsonObject) empty = json_object_new ();
   g_auto(GStrv) missing = NULL;
+  g_auto(GStrv) not_array = NULL;
   g_auto(GStrv) with_placeholder = NULL;
   g_auto(GStrv) without_placeholder = NULL;
 
@@ -75,10 +76,14 @@ test_dup_strv_member (Fixture *f,
   json_array_add_string_element (arr, "four");
   json_node_init_array (arr_node, arr);
   json_object_set_member (obj, "arr", g_steal_pointer (&arr_node));
+  json_object_set_double_member (obj, "not-array", 42.0);
 
   missing = _srt_json_object_dup_strv_member (obj, "missing", NULL);
   g_assert_null (missing);
 
+  not_array = _srt_json_object_dup_strv_member (obj, "not-array", NULL);
+  g_assert_null (not_array);
+
   with_placeholder = _srt_json_object_dup_strv_member (obj, "arr", "?!");
   g_assert_nonnull (with_placeholder);
   g_assert_cmpstr (with_placeholder[0], ==, "one");