json.sort

From RPTools Wiki
Jump to navigationJump to search

json.sort() Function

Introduced in version 1.3b51
Used to sort JSON arrays. If the array contains only numbers, they are sorted numerically; 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}]