Forum Discussion

acesario's avatar
acesario
Contributor II
5 years ago
Solved

Expression using isArray?

Does snaplogic support the use if isArray (or similar function)?

We are hitting multiple issues across pipelines where the inbound data is sometimes simply a value and sometimes an array. Would like to be able to check this, and create the array if not already an array.

For example in the below response data, wd:Section_Listing_Data an sometimes array, other times a single section of data. How to determine “isArray” and create an array if wd:Section_Listing_Data is not an array?

Blockquote
JSON with array, based on multiple ID’s

                "wd:Section_Listing_Data": [
                    {
                        "wd:ID": "COURSE_SECTION-6-25038",
                        "wd:Course_Listing_Reference": {
                            "wd:ID": {
                                "@wd:type": "Course_Listing_ID",
                                "$": "COURSE_LISTING-6-12131"
                            }
                        },
                        "wd:Section_Number": "01",
                        "wd:Course_Listing_Number": "999",
                        "wd:Course_Listing_Subject_Reference": {
                            "wd:ID": {
                                "@wd:type": "Course_Subject_ID",
                                "$": "MTH"
                            }
                        }
                    },
                    {
                        "wd:ID": "COURSE_SECTION-6-25039",
                        "wd:Course_Listing_Reference": {
                            "wd:ID": {
                                "@wd:type": "Course_Listing_ID",
                                "$": "COURSE_LISTING-6-12132"
                            }
                        },
                        "wd:Section_Number": "01",
                        "wd:Course_Listing_Number": "999",
                        "wd:Course_Listing_Subject_Reference": {
                            "wd:ID": {
                                "@wd:type": "Course_Subject_ID",
                                "$": "SDS"
                            }
                        }
                    }
                ],

JSON with obj, due to single ID

“wd:Section_Listing_Data”: {
“wd:ID”: “COURSE_SECTION_LISTING_SOCW780-1_AP_202130”,
“wd:Course_Listing_Reference”: {
“wd:ID”: {
@wd:type”: “Course_Listing_ID”,
“$”: “COURSE_LISTING_SOCW780”
}
},
“wd:Section_Number”: “1”,
“wd:Course_Listing_Number”: “780”,
“wd:Course_Listing_Subject_Reference”: {
“wd:ID”: {
@wd:type”: “Course_Subject_ID”,
“$”: “SOCW”
}
}
},

  • There are a couple of options, maybe more.

    I use sl.ensureArray quite frequently. It converts the object to an array, if it is not already an array. sl.ensureArray($myObjectOrArray)

    Also available is typeof, which comes in handy in other cases. typeof $myObjectOrArray == "array"