Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在阅读json时,可以替代eval。

在阅读json时,可以替代eval。
EN

Stack Overflow用户
提问于 2018-03-13 04:37:50
回答 2查看 159关注 0票数 1

我有一个类来解析一些在线字典中的数据,它从json读取有关word的信息,然后执行json告诉的方法。json的一个例子:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
"functions": [
    {
        "name": "find_translations",
        "properties": {
            "only_first": false
        }
    },
    {
        "name": "find_synonyms",
        "properties": {
             "number": 5
        }
],
"word": "to exuberate",
"language": "angielski",
"target_language": "polski",
"collection": "default"
}

所以,我有一个带有find_translations和find_synonyms方法的类。__init __正在读取json,我希望像json那样使用参数来执行函数。我可以做很多的假设,但我想它不是可伸缩的。我可以做eval(),但这是一个漏洞。我做什么好?我能创建像字典一样的函数吗?

编辑:

这是我的课(简化):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Parser:
  def __init__(self, path):
    ...
    # reads data from json
    ...

    # my problem: I need to launch methods from this class
    # that were mentioned in json. In case from example, I'd launch
    self.find_translations(self)
    self.find_synonyms(self)
    # it is an example, so without parameters


def find_translations(self):
    # do something

def find_synonyms(self):
    # do something

def find_usage(self):
    # do something
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-13 05:07:21

您可以使用getattr函数调用类的特定方法,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
getattr(Parser, function_name_here)(arguments_here)

我想这就是你想要的?希望能帮上忙。

票数 2
EN

Stack Overflow用户

发布于 2018-03-13 04:53:54

使用ast.literal_eval作为eval的更安全的替代方案

来自文档

ast.literal_eval:安全地计算表达式节点或包含Python文字或容器显示的字符串。提供的字符串或节点可能只包含以下Python文字结构:字符串、字节、数字、元组、列表、迪克、集、布尔值和None。 这可以用于从不受信任的来源安全地计算包含Python值的字符串,而不需要自己解析值。它不能评估任意复杂的表达式,例如涉及运算符或索引。

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

https://stackoverflow.com/questions/49256431

复制
相关文章
eval解析json字符串
场景:在springMVC,手动拼接的list,转成本json字符串后,传到前台,
河岸飞流
2019/09/11
1.1K0
JSON.parse()与eval()的区别
JSON.parse与eval和能将一个字符串解析成一个JSON对象,但还是有挺大区别。
JaneYork
2023/10/11
2700
CompletableFuture真香,可以替代CountDownLatch!
Future相当于一个占位符,代表一个操作将来的结果。一般通过get可以直接阻塞得到结果,或者让它异步执行然后通过callback回调结果。
xjjdog
2021/09/17
1.5K0
fencedframe 可以替代 iframe 吗?
今天继续聊 浏览器策略 ,这是我 「浏览器策略解读」 专栏的第 35 篇文章了,感谢读者们一如既往的支持!
ConardLi
2022/05/23
2.3K0
fencedframe 可以替代 iframe 吗?
Linux Lite 5.4 可以在您的 PC 上替代 Windows 10
原文:https://www.linuxmi.com/linux-lite-5-4.html
逆锋起笔
2021/04/26
3K0
Linux Lite 5.4 可以在您的 PC 上替代 Windows 10
JSON必知必会阅读
阅读了一下JSON必知必会,由于日常使用JSON比较多,所以文中内容大部分都已经接触过了,大概通读全书耗时1h左右 PDF地址:链接:https://pan.baidu.com/s/1iZQLR1zGJbH9Eoq3t_GYFQ 密码:x4lv
zx钟
2020/02/25
8020
eval在python中是什么意思_如何在Python中使用eval ?
在Python中,我们有许多内置方法,这些方法对于使Python成为所有人的便捷语言至关重要,而eval是其中一种。eval函数的语法如下:
全栈程序员站长
2022/11/17
3.4K0
使用httpstat替代curl,结果更易于阅读
可以看到httpstat 自动把访问的结果存到/tmp/下的临时文件了,并且给出了每个阶段的耗时情况。
保持热爱奔赴山海
2023/09/23
2950
ArrayList 可以完全替代数组吗?
在前面的文章里,我们学习了很多数据结构与算法思想。在实际的业务开发中,往往不需要我们手写数据结构,而是直接使用标准库的数据结构 / 容器类。
用户9995743
2022/12/22
7520
ArrayList 可以完全替代数组吗?
在模版类里使用自己时可以省略模版参数
用户10551528
2023/10/18
1200
在模版类里使用自己时可以省略模版参数
javascript:巧用eval函数组装表单输入项为json对象
在ajax方式做web开发时,经常会遇到会保存前,收集表单输入项,组成json对象,然后把对象直接post到服务端的场景 常规做法是在js里写类似如下的代码: var myObj = {}; myObj.x = document.getElementById("x").value; myObj.y = document.getElementById("y").value; //... //然后ajax post或get提交 表单元素不多的时候,这样还好,但是如果一个表单有好几十项甚至
菩提树下的杨过
2018/01/24
1.5K0
程序员在大数据面试时的争议:Spark能替代Hive?
本文作者:曾就职传统通讯运营商,负责BI项目的开发;目前转型互联网公司,就职于某厂负责相关的大数据仓库建设工作。
养码场
2018/10/18
1K0
程序员在大数据面试时的争议:Spark能替代Hive?
nodejs写入json文件_json文件可以删除吗
哈喽!nodejs的文件系统,接触过node的对node的文件系统肯定不会陌生,这两天我就在思考一个问题,我是否可以在本地操作我的本地json文件,这样一个本地的文本数据库就有了,如果是便签之类,记录的软件,我完全可以不用连后台的数据库,我可以自己操作本地的json文件,自己用node写后台,答案是肯定的,下面我们就一起来实现一下吧,对本地json文件的增、删、改、查
全栈程序员站长
2022/11/04
2.9K0
nodejs写入json文件_json文件可以删除吗
golang源码阅读:test2json
go test加参数-json就能输出 json格式,下面我们用一个简单的例子看下对他进行分析,然后分析下相关源码。对于单测
golangLeetcode
2023/09/06
1780
golang源码阅读:test2json
12个可以替代jenkins的CI/CD工具
Jenkins是一个开源的持续集成平台,是DevOps生命周期中的一个重要工具。但是,与当前的用户界面趋势相比,它的界面已经过时,用户界面也不够友好(苦叶子推荐你用script pipeline: Jenkins之jenkinsfile基础)。此外,Jenkin配置可能比较复杂,而且它还有许多其他缺点。
苦叶子
2020/02/25
12.1K0
12个可以替代jenkins的CI/CD工具
linux eval
eval 就是执行以下两个步骤 1.第一次,执行变量替换,类似与C语言的宏替代
雪影
2018/08/02
9090
电子阅读out,VR/AR带你走进阅读3.0时代
近日,南非一家公司启动了一项名为Kickstarer的计划,其目标是在AR技术的支持下生产一系列儿童书籍。该系列的第一本书已经开始制作,内容灵感则源自经典读物《格林童话》。该书讲述了Hansel和Gr
VRPinea
2018/05/16
7810
Python - eval()
eval 的作用域就是 g 指定的这个字典,外面的 x = 10 被屏蔽掉了,eval 是看不见的,所以使用了 x 为 5 的值
小菠萝测试笔记
2021/09/14
9030
一些原生写法可以替代Jquery方法
jQuery的核心是通过各种选择器,选中DOM元素,可以用querySelectorAll方法模拟这个功能。
javascript.shop
2019/09/04
2.1K0
Fastjson解析JSON时乱序解决
默认解析json字符串时序列化是无序的,而有些场景下需要按前台传过来的顺序 解析时传入参数Feature.OrderedField可保持有序 JSONObject jsonObject = JSONObject.parseObject(jsonData, Feature.OrderedField); List<LinkedHashMap> templateMap = JSON.parseArray(jsonObject.getString("jsonValue"), LinkedHashMap.class
4xx.me
2022/06/09
1.4K0

相似问题

替代JSON中的Eval()?

12

在处理d3动画队列时,可以替代eval()

15

Eval替代

20

Eval替代

41

还有其他方法可以替代eval()吗?

21
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文