javascript - 从对象文字字符串创建对象
问题描述
有没有一种简单的方法可以将对象文字作为字符串解析为新对象?
我正在寻找如下所示的字符串:
'{ name: "A", list: [] }'
进入像这样的对象:
{ name: 'A', list: [] }
笔记:
我不是在寻找,JSON.parse()
因为它接受 json 字符串而不是对象文字字符串。我希望这eval
会奏效,但不幸的是它没有。
解决方案
eval
确实有效,只需稍作调整:问题在于独立生产线
{ name: 'A', list: [] }
被解析为解释器作为块的开始,而不是作为对象字面量的开始。因此,就像隐式返回对象的箭头函数需要在对象周围加上括号:
arr.map(item => ({ item }))
您需要在输入字符串周围加上括号,以便将其中的内容(即以 开头的对象{
)正确解析为表达式:
const input = '{ name: "A", list: [] }';
const obj = eval('(' + input + ')');
console.log(obj);
当然,与所有eval
涉及的情况一样,您首先应该非常确定输入是值得信赖的。
推荐阅读
- java - 处理 FileUploadBase.SizeLimitExceededException
- c++ - 无范围枚举的基础类型?
- microsoft-graph-api - 获取没有开始和结束日期的事件
- laravel - PhpStorm 在访问 Auth::user()->id 时发出警告
- ios - UIWebView:s viewPrintFormatter() 返回...什么都没有?
- r - R 数据表搜索选项不处理外来编码(latin1)
- css - 如何将不同列的内容对齐在同一高度?
- c# - Webdriver 新的 DefaultWait 泛型
- linux - 比较两个目录中的文件名
- xamarin.forms - 如何在 Xamarin 上的 IOS 中查找 Url 是否已在自定义 HybridWebview 中完成加载