首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >由JSON生成的表中的Lua访问指示

由JSON生成的表中的Lua访问指示
EN

Stack Overflow用户
提问于 2019-03-16 23:21:13
回答 4查看 1.2K关注 0票数 0

因此,我一定会使用Lua从Openweathermap API获取天气数据。我设法发送了一个http请求来返回并存储所有数据,但是现在我被一个Lua表卡住了,我不知道如何使用它。我对Lua非常陌生,我没有找到任何关于Lua中这么深的嵌套表的指南或类似的东西。

特别是,我只对main中的temp字段感兴趣。下面是Sample request response接口的响应示例

依赖于Lua的socket.http和this json到Lua表格格式化程序。下面是我的基本代码结构

代码语言:javascript
代码运行次数:0
运行
复制
json = require ("json")
web = require ("socket.http")

local get = json.decode(web.request(<API Link>))

"get“现在存储了一个我不知道如何使用的表

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-03-17 07:59:55

两天后,我终于找到了错误。我在一个叫做OpenComputers的“我的世界”模型中工作,它利用了Lua。mod似乎使用了自己的socket.http版本,每次我想打印响应时,它都会返回两个函数供request使用。我发现,如果我在变量后面加上一个"()“,它会以字符串的形式返回响应,并且使用JSON库,我可以将其解码为一个可工作的表。

旁注:我可以像这样访问天气:json_table“天气”

mod在http请求上的文档非常糟糕,所以我不得不通过myslef来解决这个问题。谢谢你的回复,最后这个错误总是出乎意料的!

票数 0
EN

Stack Overflow用户

发布于 2019-03-17 04:29:27

https://www.json2yaml.com/的帮助下,结构是:

代码语言:javascript
代码运行次数:0
运行
复制
cod: '200'
message: 0.0036
cnt: 40
list:
- dt: 1485799200
  main:
    temp: 261.45
    temp_min: 259.086
    temp_max: 261.45
    pressure: 1023.48
    sea_level: 1045.39
    grnd_level: 1023.48
    humidity: 79
    temp_kf: 2.37
  weather:
  - id: 800
    main: Clear
    description: clear sky
    icon: 02n
  clouds:
    all: 8
  wind:
    speed: 4.77
    deg: 232.505
  snow: {}
  sys:
    pod: n
  dt_txt: '2017-01-30 18:00:00'
…
- dt: 1486220400
…
city:
  id: 524901
  name: Moscow
  coord:
    lat: 55.7522
    lon: 37.6156
  country: none

所以,

代码语言:javascript
代码运行次数:0
运行
复制
for index, entry in ipairs(get.list) do
    print(index, entry.dt, entry.main.temp)
end

ipairs迭代表中的正整数键,直到但不包括第一个没有值的整数。这似乎就是JSON库表示JSON数组的方式。

票数 1
EN

Stack Overflow用户

发布于 2019-03-17 04:22:14

该示例响应似乎有许多子表,其中包含main。试试这个:get.list[1].main.temp

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55198358

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档