If you haven’t already heard, Claris has released FileMaker Pro 2025… or is it FileMaker Pro 22? Whatever you want to call it, it’s the new version—and it comes packed with some great new features.
In this post, I’m going to focus on one of them: JSONParse.
Quick note: the demo file uses the SendGrid API. We’re not diving into the API, just comparing how the scripts behave once SendGrid returns the data.
Earlier this year, I put out a two-part series:
- Execute FileMaker Data API – Performance Test – Part 1
- Execute FileMaker Data API – Performance Test – Part 2
I’m referencing those because I used the same sample file here, just updated that file to include the new JSONParse function.
While I wish I could totally explain all of the “under the hood” of how this works and why it’s faster, I can’t. What I can do is show how to use it. I’ll, also, share results from a performance test with a small record set as a starting point. Why, you ask? Because, hey, when I heard its was faster, I wanted to see it for myself!
The function:
Claris defines the JSONParse function as below:
“Parses text as JSON data and keeps the parsed JSON representation in memory for you to reuse with other JSON functions.”
What this means is, continuing to reference the parsed version will be faster than reading it as it was returned. For my example, the script makes an API call to SendGrid to return a list of Templates. Then the subscript for Template Version is called and JSONParse is used in both scripts.
How is it setup.
To start, here are the scripts in this file:

The API Keys only opens a card window to enter a SendGrid API Key (if you have or want to setup an account to test for yourself). The scripts we will start with will be:
- SendGrid – Get Templates
- FM2025 – SendGrid – Get Templates
You’ll notice below both scripts are identical up to Line 34.
After that, the scripts begin to differ. In the original, the API is called in Line 34. Then the templates are extracted from the JSON using JSONGetElement on Line 37. Line 38 and 39 simply get the list of keys and count to know how many records to loop. This demo did not need to setup any sort of pagination. We’re only working with 62 records.
When you look down to Line 52, you will notice that the value from the array is getting parsed and the script parses the value variable, as shown in Lines 52-58.

Lets compare this with the other script. We can see here that Line 37 gets the templates and on Line 40 the parse variable is set using JSONParse ( $templates ). Another new function JSONParsedState will check to see if the data has parsed JSON. It will retun 0 if its not parsed, -1 if parsed and invalid or a postive number if parsed and valid. The postive numbers represent the JSON type which can be found with JSONSetElement.
Following down to Line 63 it shows getting the key from the list of keys. But instead of parsing the value out in Lines 64 and 65 we’re only grabbing the ids direct from the $parse variable since reading it direct is faster. This is the one main difference. Yes, I could have set that up to do on the other script. However, I wanted to compare with how I currently have it written.

Comparing the two images below you will notice becasue the data was previouslt set from $value, those fiedls are set by the variables but the other is just getting the data direct from the $parse.
Now lets take a quick look at the subscript. But first a little understanding that SendGrid has Templates and Template Versions. Each Template can have multiple Template Versions but only one can be active which is why there is no loop to get other versions and the first returned for me has always been the active version, plus the data i am pulling does not have multiple versions so I did not account for it here.
Here is one of the two differences in the subscripts. Just like the previous script it is using JSONParse on the response as seen in Line 37. For consistency the JSONParsedState has also been added below should we want to perform an action if its not valid json.

The only other difference is the variable its pulling from has just been updated in the set fields to $parse instead of $response as seen below.

How did it compare?
Tests below show the Original taking 29 seconds and the JSONParse at 27 seconds. The other sendgrid account I tested with had 2 recors and there was no difference in time.
While this is not a huge difference it was a couple seconds faster and on a small record count it is not a suprise. In a future post I willl run it against a much larger record count and compare the results.
Keep an eye out either later today or tomorrow for another post with more new features.
Have a good week!
If you need help utilizing new features of FileMaker 2025, let us help by clicking the button below!







