Module:Json parameter test: Difference between revisions

From Visual Data Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 3: Line 3:
function p.generateClassLists(frame)
function p.generateClassLists(frame)
     -- JSON-Daten in einem Lua-String
     -- JSON-Daten in einem Lua-String
     local jsonData = frame:callParserFunction('#visualdataquery:[[unique title::+]]', { '?articleid', schema = 'Data classes', format = 'json-raw' })
     -- local jsonData = frame.args.jsonData
   
    -- {{#visualdataquery:[[unique title::+]]
--  |?articleid
--  |schema = Data classes
--  |format = json-raw
-- }}


     -- Debug: Gib die empfangenen JSON-Daten aus
     local jsonData = frame:callParserFunction( '#visualdataquery:[[unique title::+]]', { '?articleid', schema = 'Data classes', format = 'json-raw' } )
     local debugInfo = "Received JSON Data: " .. tostring(jsonData) .. "\n"
   
     jsonData = mw.text.killMarkers(jsonData)
   
    -- local jsonData = ' [{"pagetitle":"Classes/Gender","data":{"unique title":"Classes/Gender","title":"Gender","class names":["female","male","diverse"]}},{"pagetitle":"Classes/Age","data":{"unique title":"Classes/Age","title":"Age","class names":["0 - 14","15 - 29","30 - 44","45 - 59","60 +"]}},{"pagetitle":"Classes/Districts","data":{"unique title":"Classes/Districts","title":"Districts","class names":["District 1","District 2","District 3","District 4"]}},{"pagetitle":"Classes/Test classes","data":{"unique title":"Entry:Classes/Test classes","title":"Test classes","class names":["Class 1","Class 2"]}},{"pagetitle":"Classes/Test sub-classes","data":{"unique title":"Entry:Classes/Test sub-classes","title":"Test sub-classes","class names":["Sub-class 1","Sub-class 2"]}},{"pagetitle":"Classes/Test sub-sub classes 1","data":{"unique title":"Entry:Classes/Test sub-sub classes_1","title":"Test sub-sub classes","class names":["Sub-sub class 1","Sub-sub class 2"]}},{"pagetitle":"Classes/School districts","data":{"unique title":"Entry:Classes/School districts","title":"School districts","class names":["School district 1","School district 2","School district 3"]}},{"pagetitle":"Classes/Schools","data":{"unique title":"Entry:Classes/Schools","title":"Schools","class names":["School 1","School 2","School 3","School 4"]}},{"pagetitle":"Classes/School classes","data":{"unique title":"Entry:Classes/School classes","title":"School classes","class names":["Class 1","Class 2","Class 3","Class 4","Class 5","Class 6","Class 7","Class 8","Class 9","Class 10"]}}] '


     -- Überprüfe, ob jsonData gültig ist
     -- Debugging: Gib die empfangenen JSON-Daten aus
    if not jsonData or jsonData == '' then
     -- return "Received JSON Data: " .. tostring(jsonData)
        return "Keine JSON-Daten empfangen."
      
    end
-- JSON-Daten in Lua-Tabelle umwandeln
 
     local json = mw.text.jsonDecode(jsonData)
    -- Entferne führende und nachfolgende Leerzeichen
    jsonData = mw.text.trim(jsonData)
 
    -- Debug: Gib die getrimmten JSON-Daten aus
    debugInfo = debugInfo .. "Trimmed JSON Data: " .. tostring(jsonData) .. "\n"
 
     -- Debug: Gib die Länge der JSON-Daten aus
    debugInfo = debugInfo .. "Length of JSON Data: " .. tostring(#jsonData) .. "\n"
 
     -- Ersetze nicht druckbare Zeichen durch sichtbare Platzhalter
    local jsonDataVisible = jsonData:gsub("%c", function(c) return string.format("\\x%02X", string.byte(c)) end)
 
    -- Debug: Gib die sichtbaren JSON-Daten aus
    debugInfo = debugInfo .. "Visible JSON Data: " .. jsonDataVisible .. "\n"
 
    -- Überprüfe auf bekannte Platzhalter und entferne diese
    jsonData = jsonData:gsub("\127'\"`UNIQ%-%-.-%-%-QINU`\"'\127", "")
 
    -- JSON-Daten in Lua-Tabelle umwandeln
     local success, json = pcall(mw.text.jsonDecode, jsonData)
    if not success then
        return debugInfo .. "Fehler beim Dekodieren der JSON-Daten: " .. tostring(json)
    end
 
    debugInfo = debugInfo .. "Decoded JSON Data: " .. mw.dumpObject(json) .. "\n"


     local result = {}
     local result = {}
Line 48: Line 32:
     end
     end


     return debugInfo .. table.concat(result, "\n\n")
     return table.concat(result, "\n\n")
end
end


return p
return p

Revision as of 08:03, 27 May 2024

Documentation for this module may be created at Module:Json parameter test/doc

local p = {}

function p.generateClassLists(frame)
    -- JSON-Daten in einem Lua-String
    -- local jsonData = frame.args.jsonData
    
    -- {{#visualdataquery:[[unique title::+]]
	--   |?articleid
	--   |schema = Data classes
	--   |format = json-raw
	-- }}

    local jsonData = frame:callParserFunction( '#visualdataquery:[[unique title::+]]', { '?articleid', schema = 'Data classes', format = 'json-raw' } )
    
    jsonData = mw.text.killMarkers(jsonData)
    
    -- local jsonData = ' [{"pagetitle":"Classes/Gender","data":{"unique title":"Classes/Gender","title":"Gender","class names":["female","male","diverse"]}},{"pagetitle":"Classes/Age","data":{"unique title":"Classes/Age","title":"Age","class names":["0 - 14","15 - 29","30 - 44","45 - 59","60 +"]}},{"pagetitle":"Classes/Districts","data":{"unique title":"Classes/Districts","title":"Districts","class names":["District 1","District 2","District 3","District 4"]}},{"pagetitle":"Classes/Test classes","data":{"unique title":"Entry:Classes/Test classes","title":"Test classes","class names":["Class 1","Class 2"]}},{"pagetitle":"Classes/Test sub-classes","data":{"unique title":"Entry:Classes/Test sub-classes","title":"Test sub-classes","class names":["Sub-class 1","Sub-class 2"]}},{"pagetitle":"Classes/Test sub-sub classes 1","data":{"unique title":"Entry:Classes/Test sub-sub classes_1","title":"Test sub-sub classes","class names":["Sub-sub class 1","Sub-sub class 2"]}},{"pagetitle":"Classes/School districts","data":{"unique title":"Entry:Classes/School districts","title":"School districts","class names":["School district 1","School district 2","School district 3"]}},{"pagetitle":"Classes/Schools","data":{"unique title":"Entry:Classes/Schools","title":"Schools","class names":["School 1","School 2","School 3","School 4"]}},{"pagetitle":"Classes/School classes","data":{"unique title":"Entry:Classes/School classes","title":"School classes","class names":["Class 1","Class 2","Class 3","Class 4","Class 5","Class 6","Class 7","Class 8","Class 9","Class 10"]}}] '

    -- Debugging: Gib die empfangenen JSON-Daten aus
    -- return "Received JSON Data: " .. tostring(jsonData)
    
	-- JSON-Daten in Lua-Tabelle umwandeln
    local json = mw.text.jsonDecode(jsonData)

    local result = {}

    for _, item in ipairs(json) do
        local title = item.data.title
        local classNames = item.data["class names"]
        table.insert(result, "== " .. title .. " ==")
        table.insert(result, "* " .. table.concat(classNames, "\n* "))
    end

    return table.concat(result, "\n\n")
end

return p