json, xml, txt 등의 파일을 가져오고 싶나요?
앱을 만들다보면 인터넷에 있는 파일들을 가져와야 하는 경우가 생깁니다. 코로나를 이용하면 간단한 코드만으로 파일을 가져오고 파싱(Parsing, 분석)할 수 있습니다.
웹에 있는 txt 파일을 가져오는 샘플입니다. main.lua에 아래 코드를 넣으면 됩니다.
local function networkListener( e )
if ( e.isError ) then
print( "Network error!" )
else
print ( "RESPONSE: " .. e.response )
end
end
network.request( "https://dl.dropboxusercontent.com/u/1486638/loadTest.txt", "GET", networkListener )
json 파일을 가져와서 파싱하는 예제입니다.
local json = require("json")
local function networkListener( e )
if ( e.isError ) then
print( "Network error!" )
else
local jsonData = json.decode(e.response)
print(jsonData.data[3]) -- tomato
end
end
network.request( "https://dl.dropboxusercontent.com/u/1486638/loadTest.json", "GET", networkListener )
[json 파일 내용]
{
"data" : [
"apple",
"banana",
"tomato"
]
}
위 json을 테이블뷰에 적용하는 예제입니다. main.lua의 내용을 모두 지우고 아래 코드를 넣으면 됩니다.
-- 기본 설정
display.setStatusBar(display.HiddenStatusBar)
display.setDefault("anchorX", 0)
display.setDefault("anchorY", 0)
-- 모듈 로드
local json = require ("json")
local widget = require ("widget")
-- 테이블뷰 생성
local function onRowRender(e)
local row = e.row -- row.params, row.index, row.contentWidth, row.contentHeight
local params = row.params
local cWidth = row.contentWidth
local cHeight = row.contentHeight
local txt = display.newText(row, params.name, 10, 10, 0, 0, native.systemFontBold, 15)
txt:setFillColor(0, 0, 0)
end
local tableView = widget.newTableView({
width = 320,
height = 480,
noLines = true,
onRowRender = onRowRender
})
-- json 로드
local function networkListener( e )
if ( e.isError ) then
print( "Network error!" )
else
local jsonData = json.decode(e.response)
-- 테이블뷰의 Row 생성
for k, v in pairs(jsonData.data) do
tableView:insertRow({
isCategory = false,
params = {name=v}
})
end
end
end
network.request( "https://dl.dropboxusercontent.com/u/1486638/loadTest.json", "GET", networkListener )