Item:OSWf1df064239044b8fa3c968339fb93344
(Update package: OSW Docs - Core) |
(update from wiki-dev) Tag: 2017 source edit |
||
Line 78: | Line 78: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==JSON Documents: Pointer | ==JSON Documents: Pointer== | ||
Pointer allow reference to | Pointer allow reference to | ||
Line 100: | Line 100: | ||
<nowiki>#</nowiki>/kids/0 - the first item within the array "kids" | <nowiki>#</nowiki>/kids/0 - the first item within the array "kids" | ||
==JSON Documents: | ==JSON Documents: Reference== | ||
References allow reference to | |||
*An external JSON document | *An external JSON document | ||
*Combined with a pointer: An object within the external JSON document | |||
<syntaxhighlight lang="json"> | <syntaxhighlight lang="json"> | ||
Line 111: | Line 111: | ||
"partner": { | "partner": { | ||
"$ref": "http://www.personaldata.com/walter.birch.json" | "$ref": "http://www.personaldata.com/walter.birch.json" | ||
}, | |||
"partner_firstname": { | |||
"$ref": "http://www.personaldata.com/walter.birch.json#firstname" | |||
} | } | ||
} | } | ||
</syntaxhighlight>Specification: [http://jsonref.org/] | |||
==JSON Documents: Path== | |||
Paths allow query / filter values within a JSON document<syntaxhighlight lang="json"> | |||
{ | |||
"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 | |||
} | |||
] | |||
} | |||
} | |||
</syntaxhighlight> | |||
*$.store.book[*].price => [8.95, 22.99] | |||
*$.store.book[?(@.title == 'The Lord of the Rings')].price => 22.99 | |||
Specification: [https://datatracker.ietf.org/doc/html/rfc9535] | |||
Conceptually also available as AWS S3 Select[https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-select-sql-reference-select.html] and Postgres JSONB [https://www.postgresql.org/docs/current/datatype-json.html#JSON-CONTAINMENT] | |||
== JSON vs. YAML == | |||
YAML version 1.2 is a superset of JSON with a simplified syntax | |||
<div style=" column-count: 2;"> | |||
<div>JSON (more machine-friendly) | |||
<syntaxhighlight lang="json"> | |||
{ | |||
"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 | |||
} | |||
] | |||
} | |||
} | |||
</syntaxhighlight> | |||
</div> | |||
<div>YAML (more human-friendly) | |||
<syntaxhighlight lang="yaml"> | |||
# 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 | |||
</syntaxhighlight> | </syntaxhighlight> | ||
</div> | |||
</div> | |||
==JSON Documents: Next== | ==JSON Documents: Next== |
Latest revision as of 16:27, 9 August 2024
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" |