【问题标题】:how to parse this data structure in corona sdk?如何在 corona sdk 中解析这个数据结构?
【发布时间】:2016-04-25 20:37:45
【问题描述】:

你好,我有这个 json 数据

"bookinfo": { "result1":{"page":"1","text":"aa","audio":"1.mp3"}, "result2":{"page":"1","text":"bb","audio":"2.mp3"}, "result3":{"page":"1","text":"cc.","audio":"3.mp3"} }

我使用这个代码

  local function networkListener( event )
      if ( event.isError ) then
          print ( "ERROR!" )
      else
          local jsonContent = json.decode(event.response).bookinfo
          print(jsonContent[1].text )
      end
    end

json数据不是只有3个result1,2,3 ...而是数百个,这就是困难所在。

我的问题是jsonContent[1].text 不起作用,如何在不知道其名称的情况下访问子元素?仅仅通过索引?

** 注意:我确定这不是 stackoverflow 中任何问题的重复,非常感谢。

【问题讨论】:

  • "如何在不知道其名称的情况下访问子元素?仅通过索引?" - 如果您不知道名称,您打算如何编制索引?
  • 你可以使用for k,v in pairs(jsonContent) do print(v.text) end
  • 为什么您的 json 数据使用“result1”、“result2”等名称,而不是使用数组?
  • 这是我的一个项目的内存,但是当我在一个表中有json数据时,它是一个二维表,它的第一个索引在表[2][1]中找到跨度>

标签: lua coronasdk


【解决方案1】:

我发现了一个肮脏的解决方法,至少在我的情况下有效,打印字典元素变得无序......所以我遵循了这种方法。

我在 main 中添加了这个函数

function tablelength(T)
  local count = 0
  for _ in pairs(T) do count = count + 1 end
  return count
end

然后我就用了这个

   local count = 0

    local function networkListener( event )
        if (event.isError) then
            print ( "ERROR!" )
        else
            local jsonContent = json.decode(event.response)
            count = tablelength(jsonContent.bookinfo); print(count)
            local content = jsonContent
            local texts = {}
            for i=1,count do texts[i] = jsonContent.bookinfo["result"..i].text end
        end
    end

如果您有更好的解决方案,请告诉我们。

【讨论】:

    猜你喜欢
    • 2011-12-18
    • 2018-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-02
    • 2021-11-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多