앱을 만들다보면 인터넷에 있는 파일들을 가져와야 하는 경우가 생깁니다. 코로나를 이용하면 간단한 코드만으로 파일을 가져오고 파싱(Parsing, 분석)할 수 있습니다.

웹에 있는 txt 파일을 가져오는 샘플입니다. main.lua에 아래 코드를 넣으면 됩니다.

1
2
3
4
5
6
7
8
9
local function networkListener( e )
    if ( e.isError ) then
        print( "Network error!" )
    else
        print ( "RESPONSE: " .. e.response )
    end
end

network.request( "http://j.mp/2nkZOyv", "GET", networkListener )

json 파일을 가져와서 파싱하는 예제입니다.

1
2
3
4
5
6
7
8
9
10
11
12
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])
    end
end

network.request( "http://j.mp/2nl028U", "GET", networkListener )

위 json을 테이블뷰에 적용하는 예제입니다. main.lua의 내용을 모두 지우고 아래 코드를 넣으면 됩니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
-- 기본 설정
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( "http://j.mp/2nl028U", "GET", networkListener )