Diese EPGP World of Warcraft addon gibt eine epgp.lua-Datenbankdatei aus.Lua-Daten in JSON konvertieren
Ich schrieb eine plugin, um die Lua-Daten in ein JSON-Objekt zur Anzeige auf einer Gildenwebseite zu konvertieren. Es funktionierte in älteren Versionen des Addons, aber jetzt habe ich Probleme, es zu bekommen, um die Datei richtig zu konvertieren. Hier sind zwei Snippets, die das Konvertierungsproblem zeigen - siehe this demo.
Die ersten Arbeiten groß auf eine verschachtelte Array bilden:
["roster_info"] = {
{
"Agantica", -- [1]
"ROGUE", -- [2]
"09/03-2013", -- [3]
}, -- [1]
{
"Intikamim", -- [1]
"PALADIN", -- [2]
"17/02-2013", -- [3]
}, -- [2]
},
wird
"roster_info" : [
[
"Agantica",
"ROGUE",
"09/03-2013"
],
[
"Intikamim",
"PALADIN",
"17/02-2013"
]
]
Aber die Zeichenfolge replacment sieht diesen nächsten Schnipsel als verschachtelten Array, wenn es innerhalb von einem Objekt sein sollte 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]
},
wird
"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"
]
]
Hier ist das String-Konvertierungsscript, das nur für das erste Snippet funktioniert.
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\=/,'');
Also, ich brauche etwas Hilfe die Lua immer richtig von Objekten (zweites Beispiel) mit einem Array zu konvertieren.
Wie wird die [epgp.lua] (https://github.com/Mottie/epgp/blob/master/epgp.lua) generiert? Wenn es ein Lua-Code ist, der diese Ausgabe generiert, können Sie diesen Code bearbeiten und die LuaJSON-Bibliothek/das LuaJSON-Modul verwenden. – hjpotter92
Es wird vom Addon generiert, wenn Sie sich von World of Warcraft abmelden. Sie müssen lediglich die Rohdatendatei auf Ihre Site hochladen. – Mottie
Dies ist wegen Ihrer 'ersetze Sätze, die mit einem Kommentar mit eckigen Klammern enden 'und' Ändern Sie doppelte Curlies in eckige Klammern'. Doppelte Curlies sind keine notwendige Anordnung innerhalb der Anordnung. Objekt innerhalb Array ist auch doppelte Curlies in Lua. –