Questo EPGP World of Warcraft addon emette un file di database epgp.lua.Converti dati Lua in JSON
Ho scritto un plugin per convertire i dati Lua in un oggetto JSON per la visualizzazione su un sito Web della gilda. Funzionava con le versioni precedenti dell'addon, ma ora sto avendo problemi a cercare di convincerlo a convertire il file correttamente. Ecco due snippet che mostrano il problema di conversione: vedi this demo.
I primi lavori grandi a formare un array nidificato:
["roster_info"] = {
{
"Agantica", -- [1]
"ROGUE", -- [2]
"09/03-2013", -- [3]
}, -- [1]
{
"Intikamim", -- [1]
"PALADIN", -- [2]
"17/02-2013", -- [3]
}, -- [2]
},
diventa
"roster_info" : [
[
"Agantica",
"ROGUE",
"09/03-2013"
],
[
"Intikamim",
"PALADIN",
"17/02-2013"
]
]
Ma il replacment stringa vede questa seguente ritaglio come una matrice nidificata quando dovrebbe essere un oggetto all'interno di un array:
["bonus_loot_log"] = {
{
["player"] = "Magebox",
["timestamp"] = "2013-03-07 13:44:00",
["coinsLeft"] = "-1",
["reward"] = "|cffa335ee|Hitem:86815:0:0:0:0:0:0:632235520:90:0:445|h[Attenuating Bracers]|h|r",
}, -- [1]
{
["player"] = "Lîutasila",
["coinsLeft"] = "-1",
["timestamp"] = "2013-03-07 13:47:00",
}, -- [2]
},
diventa
"bonus_loot_log" : [
[
"player" : "Magebox",
"timestamp" : "2013-03-07 13:44:00",
"coinsLeft" : "-1",
"reward" : "|cffa335ee|Hitem:86815:0:0:0:0:0:0:632235520:90:0:445|h[Attenuating Bracers]|h|r"
],
[
"player": "Lîutasila",
"coinsLeft": "-1",
"timestamp": "2013-03-07 13:47:00"
]
]
Ecco lo script di conversione stringa che funziona solo sul primo frammento.
lua_string
.replace(/\[(.*)\]\s\=\s/g,'$1:') // change equal to colon & remove outer brackets
.replace(/[\t\r\n]/g,'') // remove tabs & returns
.replace(/\}\,\s--\s\[\d+\]\}/g,']]') // replace sets ending with a comment with square brackets
.replace(/\,\s--\s\[\d+\]/g,',') // remove close subgroup and comment
.replace(/,(\}|\])/g,'$1') // remove trailing comma
.replace(/\}\,\{/g,'],[') // replace curly bracket set with square brackets
.replace(/\{\{/g,'[[') // change double curlies to square brackets
.replace(/EPGP_DB\s\=/,'');
Quindi, ho bisogno di aiuto per far sì che la Lua si converta correttamente con una serie di oggetti (secondo esempio).
Come viene generato [epgp.lua] (https://github.com/Mottie/epgp/blob/master/epgp.lua)? Se si tratta di un codice lua che genera questo output, è possibile modificare tale codice e utilizzare la libreria/modulo LuaJSON. – hjpotter92
Viene generato dall'addon quando esci da World of Warcraft. Tutto quello che devi fare è caricare il file di dati grezzi sul tuo sito. – Mottie
Questo a causa delle tue serie di "sostituisci serie che terminano con un commento con parentesi quadre" e "cambia le doppie pieghe a parentesi quadre". I doppi riccioli non sono necessariamente la media dell'array all'interno dell'array. L'oggetto all'interno dell'array è anche un doppio ricciolo in Lua. –