json.path.set: Difference between revisions

From RPTools Wiki
Jump to navigation Jump to search
(Created page with "{{MacroFunction |name=json.path.set |version=1.5.5 |description= Change an element in a nested JSON Array. Additional information on how to specify the path is available [...")
 
No edit summary
Line 26: Line 26:
To replace the Punch to an Axe, we can run
To replace the Punch to an Axe, we can run


<source lang="mtmacro" line>
[monsters = json.path.set(monsters, "Orc.Attacks.[1]", "Axe")]
[monsters = json.path.set(monsters, "Orc.Attacks.[1]", "Axe")]
 
</source>


To change all "Sword" attacks to "Greatsword", we can run
To change all "Sword" attacks to "Greatsword", we can run

Revision as of 19:15, 19 September 2019

json.path.set() Function

Introduced in version 1.5.5
Change an element in a nested JSON Array. Additional information on how to specify the path is available here.

Usage

json.path.add(json, path, value)

Parameters

  • json - The json element in which the JSON Array is nested.
  • path - The path to the element in the JSON Array.
  • value - The value to change.

Examples

Suppose we have the following nested json:
[h:troll = json.set("{}", "name", "Troll", "HP", 75, "Attacks", json.append("Claw", "Bite"))]
[h:orc = json.set("{}", "name", "Orc", "HP", 13, "Attacks", json.append("Sword", "Punch"))]
[h:monsters = json.set("{}", "Troll", troll, "Orc", orc)]

To replace the Punch to an Axe, we can run

[monsters = json.path.set(monsters, "Orc.Attacks.[1]", "Axe")]

To change all "Sword" attacks to "Greatsword", we can run

[monsters = json.path.set(monsters, "*.Attacks[?(@ == 'Sword')]", "Great Sword")]