JSON Tutorial
Item:OSWf1df064239044b8fa3c968339fb93344
Description
Covers basics about JSON-Documents
Item | |
---|---|
Type(s)/Category(s) | Tutorial |
CreativeWork |
---|
Article |
---|
Tutorial | |
---|---|
Prerequisites (required) | |
Prerequisites (optional) | |
Follow-up (recommended) | JSON-SCHEMA Tutorial JSON-LD Tutorial |
JSON Documents: Basics
What is a JSON?
- A JSON itself is a JSON object, marked by [1]
{}
JSON Documents: Key-Value-Pairs
- A JSON object defines key(word):value pairs.
- Keys are formatted as strings, marked by quotation marks ("").
{
"key": "value"
}
JSON Documents: Data types
- The key is always a string
- The value can be a string, a number, a boolean or null
- Additional data types are only possible by referencing them as external resources
{
"key": "value",
"string": "any string value",
"number": 1.0,
"bool": true,
"empty": null,
"image": "https://my.cloud/image-1.png"
}
JSON Documents: Subobjects
- The value can also be a JSON document (object) itself
- A nested object can have the same key-value pairs as the root document
- There is no limit in the nesting depth
{
"key": "value",
"string": "any string value",
"number": 1.0,
"bool": true,
"empty": null,
"object": {
"has": "it's own key-value-pairs"
}
}
JSON Documents: Arrays
- The value can also be an array (list)
- An array can contain any element, including objects and nested arrays
{
"key": "value",
"string": "any string value",
"number": 1.0,
"bool": true,
"empty": null,
"object": {
"has": "it's own key-value-pairs"
},
"array": [
"a list",
{"of": "any"},
["item1", 1.0, true]
]
}
JSON Documents: Pointer
Pointer allow reference to
- An object within the JSON document
{
"firstname": "Susan",
"surname": "Birch",
"kids": ["Anne", "Tom"],
"emergency_contact": {
"$ref": "#/kids/0"
}
}
Syntax [2]:
# - the whole document = self-reference
#/kids - the value of the key "kids"
#/kids/0 - the first item within the array "kids"
JSON Documents: Reference
References allow reference to
- An external JSON document
- Combined with a pointer: An object within the external JSON document
{
"firstname": "Susan",
"surname": "Birch",
"partner": {
"$ref": "http://www.personaldata.com/walter.birch.json"
},
"partner_firstname": {
"$ref": "http://www.personaldata.com/walter.birch.json#firstname"
}
}
Specification: [3]
JSON Documents: Path
Paths allow query / filter values within a JSON document
{
"store": {
"book": [
{ "author": "Nigel Rees",
"title": "Sayings of the Century",
"price": 8.95
},
{ "author": "J. R. R. Tolkien",
"title": "The Lord of the Rings",
"isbn": "0-395-19395-8",
"price": 22.99
}
]
}
}
- $.store.book[*].price => [8.95, 22.99]
- $.store.book[?(@.title == 'The Lord of the Rings')].price => 22.99
Specification: [4]
Conceptually also available as AWS S3 Select[5] and Postgres JSONB [6]
JSON vs. YAML
YAML version 1.2 is a superset of JSON with a simplified syntax
JSON (more machine-friendly)
{
"store": {
"book": [
{ "author": "Nigel Rees",
"title": "Sayings of the Century",
"price": 8.95
},
{ "author": "J. R. R. Tolkien",
"title": "The Lord of the Rings",
"isbn": "0-395-19395-8",
"price": 22.99
}
]
}
}
YAML (more human-friendly)
# comments are allowed
store:
book:
- author: Nigel Rees
title: Sayings of the Century
price: 8.95
- author: J. R. R. Tolkien
title: The Lord of the Rings
isbn: 0-395-19395-8
price: 22.99
JSON Documents: Next
jsondata
required_predecessor |
| |||||
---|---|---|---|---|---|---|
optional_predecessor |
| |||||
recommended_successor |
| |||||
type |
| |||||
uuid | "f1df0642-3904-4b8f-a3c9-68339fb93344" | |||||
name | "JsonTutorial" | |||||
label |
| |||||
description |
| |||||
image | "File:OSW2055124fe7b344148a1baad537bf8e35.png" |