Luaテーブル式を解析するためのツールが必要です。他のすべてが失敗した場合、最終的には小さなLuaモジュールをコーディングしてテーブルをXMLに変換しますが、当面はそれを行うRubyライブラリに興味がありますが、失敗した場合は、任意の言語のツールを受け入れます。そのソースを見ることができます。
スニペットの例を次に示します(これはWoWアドオン出力です)。
CT_RaidTracker_RaidLog = {
{
["PlayerInfos"] = {
["Nyim"] = {
["race"] = "Orc",
["guild"] = "Excubitores Noctae",
["sex"] = 2,
["class"] = "HUNTER",
["level"] = 70,
},
["Zyrn"] = {
["race"] = "BloodElf",
["guild"] = "Excubitores Noctae",
["sex"] = 2,
["class"] = "WARLOCK",
["level"] = 70,
},
...
基本的な考え方は、ネストされた連想配列です。ヘルプやポインタがあれば調べられます。アイデアはありがたいです。
EDIT #1
論争のため、私が何を試みたかを明確にさせてください。次のように、参加者の1人が提供した文字列/正規表現置換チェーンを補完しました。
str.gsub(/--.+$/, "").gsub("=", ":").gsub(/[\[\]]/,"").gsub('" :','":').gsub(/,\s*\n(\s*)}/, "\n\\1}")
私は(1)Luaコメントの削除を追加し、(2)正規表現置換の1つを置き換えました:オブジェクト/配列の最後の要素がある場合でも、その後にコンマがあるため、カバーしてコンマを適切に削除する必要があります。
中括弧が二重に開いていることに気づきましたか?JSONは匿名オブジェクトを持つのが好きではありません。それはそのように見えます:
"xxx" = {
{
["aaa"} = {
["bbb"] = {
"ccc" = 7
"ddd" = "a string"
"eee" = "a date/time pattern"
}
},
["qqq"} = {
"hm" = "something"
}
},
{
["aaa"] = {
-- ...
},
["qqq"] = {
-- ...
}
}
}
基本的にルートレベルでは、例に従うために、実際には「aaa」セクションと「qqq」セクションの両方を持つ類似したオブジェクトのリスト/配列があります。ただし、Luaでは明らかに許可されていますが、JSONでは許可されていません。中括弧の先頭は「オブジェクトの開始」のように扱われますが、そのオブジェクトには名前がありません。
そのケースを正規表現で検出し、中括弧を「[]」ペアに置き換えようとしました。結果の正規表現は機能しましたが、問題は同じでした。代わりに、同様のオブジェクトの配列を定義しますが、配列の宣言には名前がありません。
考えられる解決策は、これらの中括弧を検出して[]に置き換える代わりに、オブジェクトを次のようなインデックスで命名することです"0" = { "aaa" = {...} }, "1" = { "aaa" = {... } }
。その(できれば最終的な)回避策でおそらく機能するでしょう...再度報告します。;)