json.sort: Difference between revisions
Jump to navigation
Jump to search
Verisimilar (talk | contribs) m (Initial write-up.) |
(Updated for new features and added examples.) |
||
Line 1: | Line 1: | ||
{{MacroFunction | {{MacroFunction | ||
|name=json.sort | |name=json.sort | ||
Line 13: | Line 12: | ||
json.sort(array, direction) | json.sort(array, direction) | ||
</source> | </source> | ||
If you have a [[JSON Array]] that contains [[JSON Object]]s | |||
<source lang="mtmacro" line> | |||
json.sort(array, direction, key1, ..., keyN) | |||
</source> | |||
'''Parameters''' | '''Parameters''' | ||
* {{code|array}} - The JSON array to sort. | * {{code|array}} - The JSON array to sort. | ||
Line 24: | Line 28: | ||
** {{code|"a"}} | ** {{code|"a"}} | ||
** {{code|"d"}} | ** {{code|"d"}} | ||
* {{code|key1, ..., keyN}} - The keys in the [[JSON Object]]s contained within the [[JSON Array]] used for sorting. All [[JSON Object]]s must contain these fields. | |||
|examples= | |||
Sorting a [[JSON Array]] containing numbers. | |||
<source lang="mtmacro" line> | |||
[json.sort("[1,4,5,6,2,1,9,20,1]")] | |||
</source> | |||
Produces {{code|[1,1,1,2,4,5,6,9,20]}} | |||
Sorting a [[JSON Array]] containing strings. | |||
<source lang="mtmacro" line> | |||
[json.sort("['Hero', 'Dragon', 'Elf', 'Wolf', 'Mage', 'Eagle', 'Troll']")] | |||
</source> | |||
Produces {{code|["Dragon","Eagle","Elf","Hero","Mage","Troll","Wolf"]}} | |||
Sorting a mixture of numbers and strings (all will be treated as string). | |||
<source lang="mtmacro" line> | |||
[json.sort("['Hero', 3, 'Elf', 'Wolf', 100, 'Eagle', 'Troll']")] | |||
</source> | |||
Produces {{code|[100,3,"Eagle","Elf","Hero","Troll","Wolf"]}} | |||
Sorting objects by a single string key | |||
<source lang="mtmacro" line> | |||
[h:vals = '[ {name:"Hero", HP:10}, | |||
{name:"Wolf", HP:5}, | |||
{name:"Mage", HP:20}, | |||
{name:"Troll", HP:15}, | |||
{name:"Eagle", HP:5} ]'] | |||
[json.sort(vals, "a", "name")] | |||
</source> | |||
Produces | |||
{{code|[{"name":"Eagle","HP":5},{"name":"Hero","HP":10},{"name":"Mage","HP":20},{"name":"Troll","HP":15},{"name":"Wolf","HP":5}]}} | |||
Sorting objects by a single numeric key | |||
<source lang="mtmacro" line> | |||
[h:vals = '[ {name:"Hero", HP:10}, | |||
{name:"Wolf", HP:5}, | |||
{name:"Mage", HP:20}, | |||
{name:"Troll", HP:15}, | |||
{name:"Eagle", HP:5} ]'] | |||
[json.sort(vals, "a", "HP")] | |||
</source> | |||
Produces | |||
{{code| | |||
[{"name":"Wolf","HP":5},{"name":"Eagle","HP":5},{"name":"Hero","HP":10},{"name":"Troll","HP":15},{"name":"Mage","HP":20}]}} | |||
Sorting objects by a two keys, first HP then Name. | |||
<source lang="mtmacro" line> | |||
[h:vals = '[ {name:"Hero", HP:10}, | |||
{name:"Wolf", HP:5}, | |||
{name:"Mage", HP:20}, | |||
{name:"Troll", HP:15}, | |||
{name:"Eagle", HP:5} ]'] | |||
[json.sort(vals, "a", "HP", "name")] | |||
</source> | |||
Produces | |||
{{code| | |||
[{"name":"Eagle","HP":5},{"name":"Wolf","HP":5},{"name":"Hero","HP":10},{"name":"Troll","HP":15},{"name":"Mage","HP":20}]}} | |||
[[Category:JSON Function]] | |||
}} | }} | ||
Revision as of 02:41, 1 April 2009
json.sort() Function
• Introduced in version 1.3b51
Used to sort JSON arrays. If the array contains only numbers, they are sorted numerical, otherwise the values are sorted as strings alphabetically.
Usage
json.sort(array)
json.sort(array, direction)
If you have a JSON Array that contains JSON Objects
json.sort(array, direction, key1, ..., keyN)
Parameters
array
- The JSON array to sort.direction
- Defaults to"ascending"
, acceptable values:"ascending"
"descending"
"ascend"
"descend"
"asc"
"desc"
"a"
"d"
key1, ..., keyN
- The keys in the JSON Objects contained within the JSON Array used for sorting. All JSON Objects must contain these fields.
Examples
Sorting a JSON Array containing numbers.
[json.sort("[1,4,5,6,2,1,9,20,1]")]
Produces [1,1,1,2,4,5,6,9,20]
Sorting a JSON Array containing strings.
[json.sort("['Hero', 'Dragon', 'Elf', 'Wolf', 'Mage', 'Eagle', 'Troll']")]
Produces ["Dragon","Eagle","Elf","Hero","Mage","Troll","Wolf"]
Sorting a mixture of numbers and strings (all will be treated as string).
[json.sort("['Hero', 3, 'Elf', 'Wolf', 100, 'Eagle', 'Troll']")]
Produces [100,3,"Eagle","Elf","Hero","Troll","Wolf"]
Sorting objects by a single string key
[h:vals = '[ {name:"Hero", HP:10},
{name:"Wolf", HP:5},
{name:"Mage", HP:20},
{name:"Troll", HP:15},
{name:"Eagle", HP:5} ]']
[json.sort(vals, "a", "name")]
Produces
[{"name":"Eagle","HP":5},{"name":"Hero","HP":10},{"name":"Mage","HP":20},{"name":"Troll","HP":15},{"name":"Wolf","HP":5}]
Sorting objects by a single numeric key
[h:vals = '[ {name:"Hero", HP:10},
{name:"Wolf", HP:5},
{name:"Mage", HP:20},
{name:"Troll", HP:15},
{name:"Eagle", HP:5} ]']
[json.sort(vals, "a", "HP")]
Produces
[{"name":"Wolf","HP":5},{"name":"Eagle","HP":5},{"name":"Hero","HP":10},{"name":"Troll","HP":15},{"name":"Mage","HP":20}]
Sorting objects by a two keys, first HP then Name.
[h:vals = '[ {name:"Hero", HP:10},
{name:"Wolf", HP:5},
{name:"Mage", HP:20},
{name:"Troll", HP:15},
{name:"Eagle", HP:5} ]']
[json.sort(vals, "a", "HP", "name")]
Produces
[{"name":"Eagle","HP":5},{"name":"Wolf","HP":5},{"name":"Hero","HP":10},{"name":"Troll","HP":15},{"name":"Mage","HP":20}]