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=