I've worked with JSON data in the past - mainly 'fudging' my way to a solution, and not really understanding why or how things work. I've come across an issue where the data being returned looks somewhat different to what I've seen before, and I can't find any examples that match it.
Here's an example of the data returned (via an API);
{"domain.co.uk":{"status":"available","classkey":"thirdleveldotuk"},"domain.net":{"status":"available","classkey":"dotnet"},"domain.com":{"status":"available","classkey":"domcno"}}
On my front-end, I need to return something like this -
Because the 'domain.com' etc value will always change, I can't map the names as I usually would (although it will always be 3 'rows' returned)
I've checked every CF Book I own, and read the online CF Docs, but I'm totally at a loss as to where to even start with this one!
Pointers much appreciated!
If you run this with deserializeJSON(data), you'll see that you just end up with structures with nested structures. So, you can loop through your struct, grab the keys and then grab that key's status. In JSON terms, your JSON object has nested objects.
<cfset data = deserializeJSON(apiData) />
<cfset formattedData = [] />
<cfset tmp = {} />
<cfloop collection=#data# item="domain">
<cfset tmp.domain = domain />
<cfset tmp.status = data[domain]["status"] />
<cfset arrayAppend(formattedData,duplicate(tmp)) />
</cfloop>
<cfdump var=#formattedData# />
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With