Search the Community
Showing results for tags 'JSON'.
-
I was looking for a simple method to query all templates and found jsawk quite capable. It is a command line tool and works on JSON files. I've exported the templates (6MB) and made a smaller file (10kB) to test it. Jsawk needs SpiderMonkey's jsshell, you'll get it here at Mozilla, or may have it somewhere in the build folder after compiling. For simplicity I've put jsshell, jsawk and the templates JSON in the same folder. > ./jsawk -j ./js -i templates.A18.json.small -a 'return this.length'10-j tells jsawk where jsshell is and -i the input file, the command returns the number of templates in the small file. Each template has an attribute 'name' which is the name of the template. > ./jsawk -j ./js -i templates.A18.json.small 'return this.name' -a 'return this.join("\n")'structures/athen_fortressskirmish/structures/iber_wall_longunits/mace_mechanical_siege_lithobolos_packedunits/gaul_support_female_citizenunits/pers_ship_biremestructures/iber_wall_shortunits/ptol_ship_quinqueremeunits/gaul_cavalry_swordsman_eunits/athen_hero_periclesunits/sele_ship_biremeIn 'return this.name' this refers to the template, which is a JS object. In the command -a, this refers to the full result set. One can run any JS expression in these commands and use the shell for sorting. Of course you can pipe a result like this into a csv file and continue with Excel or Calc. > ./jsawk -j ./js -i templates.A18.json.small 'return [this.Identity.Civ, this.name, this.Armour.Crush]' -a 'return this.join("\n")' | sortathen,structures/athen_fortress,2athen,units/athen_hero_pericles,25gaul,units/gaul_cavalry_swordsman_e,6gaul,units/gaul_support_female_citizen,15iber,structures/iber_wall_short,3.0mace,units/mace_mechanical_siege_lithobolos_packed,1pers,units/pers_ship_bireme,5ptol,units/ptol_ship_quinquereme,5sele,units/sele_ship_bireme,5skirm,skirmish/structures/iber_wall_long,3.0Jsawk supports JSONquery to filter results: > ./jsawk -j ./js -i templates.A18.json.small -q '.*[?Armour.Crush > 10]' 'return this.name'["units/gaul_support_female_citizen","units/athen_hero_pericles"]At first the syntax appears a bit, well, awkward, but it supports full automation. All the other tools I've checked are somewhat limited. Have fun!