G'day zesys,
Welcome to the Monastery.
"... I often find it a daunting task making sense of a JSON response."
You don't say what aspects of this you find daunting. Here's a few tips.
JSON is often presented as a single string many hundreds or thousands of characters long.
I typically find this impossible to read at a glance; no doubt, you do too.
The solution is to format that string into a more humanly readable structure.
I use "JSON Formatter and Validator" for this;
if you don't like that one, there are many others available, so just search for something that better suits you.
Now that you have a readable structure, just think of each ':' as a '=>' and you have a Perl hashref.
That's a slight oversimplification but, in nearly all cases, it will hold true.
# JSON:
{
"string" : "value",
"array" : [ 1, 2, 3 ],
"hash" : {
"key1" : "val1",
"key2" : "val2"
}
}
# Perl:
{
"string" => "value",
"array" => [ 1, 2, 3 ],
"hash" => {
"key1" => "val1",
"key2" => "val2"
}
}
The JSON syntax is actually very simple.
It's described, clearly and succinctly, in "Introducing JSON".
If you're not completely familiar with hashrefs, take a look at the Hashes section of
"perlintro: Perl variable types".
That section — indeed, the entirety of the perlintro page —
is peppered with with links to more detailed descriptions, additional information, and more advanced, related topics:
don't be put off by the idea that this page is just an introduction for complete novices.
There's also a few gotchas which may not be immediately obvious; in some cases, they're highly unintuitive.
Here's a couple that have tripped me up in the past:
-
Valid JavaScript is not necessarily valid JSON.
Strings in JSON must be delimited by double-quotes, so { "answer": 42 } is valid in both.
These, however, are valid in JavaScript but not in JSON: { 'answer': 42 } and { answer: 42 }.
-
In Perl, the final element in a list may be optionally followed by a comma;
in JSON, that final comma is not allowed.
So, [ 1, 2, 3 ] is valid in both; however, [ 1, 2, 3, ] is valid Perl but invalid JSON.
| [reply] [d/l] [select] |