从没有唯一标记的 JSON 文件中提取值
2018-2-23 14:14:53
收藏:0
阅读:101
评论:3
一个有唯一标记(或更适当的字段名)前置的值的 json 文件很容易解析,因为你可以在这些唯一标记/字段名中执行字符串搜索,以找到值的第一个和最后一个字符的位置,并用这些信息确定值的位置,然后提取值。 我已经用各种 lua 脚本和 Python 脚本(也用于 xml 文件)执行过该函数。
现在需要从一个没有唯一标记/字段名,而只是多个“value_type”和“value”的 json 文件中提取值,分别是名字和值:请参见下面的示例。
{
"software_version": "NRZ-2017-099",
"age":"78",
"sensordatavalues":[
{"value_type":"SDS_P1","value":"4.43"},
{"value_type":"SDS_P2","value":"3.80"},
{"value_type":"temperature","value":"20.10"},
{"value_type":"humidity","value":"44.50"},
{"value_type":"samples","value":"614292"},
{"value_type":"min_micro","value":"233"},
{"value_type":"max_micro","value":"25951"},
{"value_type":"signal","value":"-66"}
]
}
像上面描述的经验并没有提供可行的解决方案。
问题: 在这个 json 文件布局中,如何直接提取特定的个体值(最好由 lua 脚本)?
[或者 XML 解析提供了一个更简单的解决方案吗?]
点赞
用户2261273
你可能想要查看过滤函数。
例如,在您的示例“json”中,仅获取包含“samples”值的字典,可以通过以下方式进行:
sample_sensordata = list(filter(lambda d: d["value_type"] == "samples", your_json_dict["sensordatavalues"]))
sample_value = sample_sensordata["value"]
要像Ned Batchelder所说的那样创建字典,您也可以使用类似于以下内容的字典推导:
sensor_data_dict = {d['value_type']: d['value'] for d in a}
然后只需通过sensor_data_dict['<您要查找的值类型>']获取所需的值
2018-02-23 14:16:43
用户5554685
有点晚了,我正在尝试使用 Anvil,之前的回答都没用。只是为了好奇的人。
resp = anvil.http.request("http://<ipaddress>/data.json", json=True)
#print(resp) # 打印 json 文件
tempdict = resp['sensordatavalues'][2].values()
humiddict = resp['sensordatavalues'][3].values()
temperature = float(list(tempdict)[1])
humidity = float(list(humiddict)[1])
print(temperature)
print(humidity)
2021-07-26 13:35:36
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?

下面是 Python 代码,用于读取 JSON 文件并使其更加便捷:
import json import pprint with open("/tmp/foo.json") as j: data = json.load(j) for sdv in data.pop('sensordatavalues'): data[sdv['value_type']] = sdv['value'] pprint.pprint(data)结果:
{'SDS_P1': '4.43', 'SDS_P2': '3.80', 'age': '78', 'humidity': '44.50', 'max_micro': '25951', 'min_micro': '233', 'samples': '614292', 'signal': '-66', 'software_version': 'NRZ-2017-099', 'temperature': '20.10'}