Javascript 如何分解字符串中的对象数组
我有一些返回如下内容的代码:Javascript 如何分解字符串中的对象数组,javascript,Javascript,我有一些返回如下内容的代码: body: '[ { name: "name", lastname: "lastname" }, { name: "name", lastname: "lastname" }, { name: "name", lastname: "lastname" } ]' 当然提取body是一个简单的对象。body然而,要摆脱包裹数组
body: '[
{
name: "name",
lastname: "lastname"
},
{
name: "name",
lastname: "lastname"
},
{
name: "name",
lastname: "lastname"
}
]'
当然提取body是一个简单的对象。body
然而,要摆脱包裹数组的'
,这简直是在毁灭我。我试着做object.body.slice(1,-1)
来摆脱它们,但没用。我显然没有正确地使用这个物体
如何将数组从主体中“提取”到可用数组中?如果有有效字符串,您可以使用解析对象的字符串
array = JSON.parse(string);
如果有有效字符串,您可以使用解析对象的字符串(如果有的话)
array = JSON.parse(string);
听起来像是要计算字符串的内容。假设构建这个字符串的任何代码都不能真正构建JS对象,那么可以使用
eval
或Function
生成所需的对象
var data = eval(string);
请注意,您必须确保字符串的源是安全可靠的,否则您可能正在评估恶意代码。使用eval
也可能会对性能产生影响
var data = Function("return (" + string + ");")();
使用函数
稍微安全一点,只是因为代码无法访问局部变量。它还应该避免eval
的性能成本
var data = Function("return (" + string + ");")();
关于恶意代码的警告是一样的
如果字符串数据是有效的JSON,则可以使用
JSON.parse
,但它不是,因此不能使用。为了避免安全问题,可以让源代码提供有效的JSON数据,或者编写您自己的最小解析器来解析数据。听起来您想要评估字符串的内容。假设构建这个字符串的任何代码都不能真正构建JS对象,那么可以使用eval
或Function
生成所需的对象
var data = eval(string);
请注意,您必须确保字符串的源是安全可靠的,否则您可能正在评估恶意代码。使用eval
也可能会对性能产生影响
var data = Function("return (" + string + ");")();
使用函数
稍微安全一点,只是因为代码无法访问局部变量。它还应该避免eval
的性能成本
var data = Function("return (" + string + ");")();
关于恶意代码的警告是一样的
如果字符串数据是有效的JSON,则可以使用
JSON.parse
,但它不是,因此不能使用。为了避免安全问题,要么让源代码提供有效的JSON数据,要么编写您自己的最小解析器来解析数据。您可以使用split函数,然后使用第一个元素
var a = '[{name: "name",lastname: "lastname"},{name: "name",lastname: "lastname"},{name: "name",lastname: "lastname"}]';
var s = a.split("'");
s[0]将返回所需的结果您可以使用split函数,然后获取第一个元素,让我说一下
var a = '[{name: "name",lastname: "lastname"},{name: "name",lastname: "lastname"},{name: "name",lastname: "lastname"}]';
var s = a.split("'");
s[0]将返回您想要的结果您不能这样做,因为这些键没有被引用。您的忍者告诉我:-(解析确实有效。我为这个愚蠢可笑的问题道歉。今天已经连续编写了9个小时了,我的大脑再也无法处理了。我将尽快接受答案,并向所有朋友投票:)@GalAppelbaum您在问题中发布的字符串不能反映您的实际数据,或者
JSON.parse
不起作用。问题中的字符串不是有效的JSON,因为对象的键没有用双引号括起来。你不能这样做,因为键没有引号。你忍者告诉我:-(解析确实有效。我为这个愚蠢得可笑的问题道歉。今天我已经连续编码了9个小时,我的大脑再也无法处理了。我会尽快接受答案并投票给你们所有的朋友:)@GalAppelbaum您在问题中发布的字符串不能反映您的实际数据,或者JSON。解析无效。问题中的字符串不是有效的JSON,因为对象的键没有用双引号括起来。数据从何而来?您能控制它的形式吗?如果您想要得到有效的JSON,可以使用JSON.parse
数据从哪里来?你能控制它的形式吗?如果你想得到有效的JSON,你可以使用JSON.parse
必须有另一种方法。eval
从来都不是一个好主意,即使你100%确定(因为你不能)@Aenadon:eval/Function
在那些可以保证安全的情况下是一个非常好的主意。不要玩“从不”游戏。请注意。我的回答给出了必要的警告。@Aenadon在这种情况下,这是一个好主意。Eval
将解释字符串以根据字符串生成数组。不!Eval
在未清理给定参数的情况下绝对不能使用!@lumio:Eval
是一个有用的工具,只要您知道何时使用使用它。知识渊博的程序员不需要采取这些下意识的反应。你这样极端的过度反应会伤害你自己和他人。必须有另一种方法。eval
从来都不是一个好主意,即使你100%肯定(因为你不能)@Aenadon:eval/Function
在那些可以保证安全的情况下是一个非常好的主意。不要玩“从不”游戏。请注意。我的回答给出了必要的警告。@Aenadon在这种情况下,这是一个好主意。Eval
将解释字符串以根据字符串生成数组。不!Eval
在未清理给定参数的情况下绝对不能使用!@lumio:Eval
是一个有用的工具,只要您知道何时使用使用它。知识渊博的程序员不需要采取这些下意识的反应。你这样极端的过度反应会伤害你自己和他人。变量a
不包含单引号”
。那么你要拆分什么?对不起,这是我的错误!我的意思是假设var a是一个包含这些内容的字符串在本例中,var a='\'[{name:“name”,lastname:“lastname”},{name:“name”,lastname:“lastname”},{name:“name”,lastname:“lastname”}]\'';var s=