Javascript 格式化字符串到js数组

Javascript 格式化字符串到js数组,javascript,arrays,model-view-controller,Javascript,Arrays,Model View Controller,我正在使用一个MVC应用程序,我的控制器从mongodb获得如下字符串: str = "[{ title: 'My title', items: [{ name: 'item1', link: '#' }, { name: 'item2', link: '#' }] }]" 我试图在视图中将它用作js数组,但我找不到任何方法来转换它 请注意,该数组将有一些子数组作为项,还有一些子数组,依此类推 有什么帮助吗?也许我必须在我的业务层中构建数组,而不是返回字符串?解决方案是JSON: 看一下文档:

我正在使用一个MVC应用程序,我的控制器从mongodb获得如下字符串:

str = "[{ title: 'My title', items: [{ name: 'item1', link: '#' }, { name: 'item2', link: '#' }] }]"
我试图在视图中将它用作js数组,但我找不到任何方法来转换它

请注意,该数组将有一些子数组作为项,还有一些子数组,依此类推

有什么帮助吗?也许我必须在我的业务层中构建数组,而不是返回字符串?

解决方案是JSON: 看一下文档:

下面是您需要做的:

var obj = JSON.parse(str);
这将为您提供一个Javascript对象JSON=JavaScriptObjectNotation,然后您可以这样访问它:

var firstTitle = obj[0].title;  // 'My title'
var itemsArrayOfFirstObject = obj[0].items;  // an Array of items
var linkOfForstItemInFirstObject = obj[0].items[0].link; // '#'
编辑:

我发现在您的示例中,字符串不是有效的JSON格式

解决方案是JSON: 看一下文档:

下面是您需要做的:

var obj = JSON.parse(str);
这将为您提供一个Javascript对象JSON=JavaScriptObjectNotation,然后您可以这样访问它:

var firstTitle = obj[0].title;  // 'My title'
var itemsArrayOfFirstObject = obj[0].items;  // an Array of items
var linkOfForstItemInFirstObject = obj[0].items[0].link; // '#'
编辑:


我注意到,在您的示例中,字符串不是有效的JSON格式

不知道应用程序的其他结构,将该字符串转换为对象的简单方法是使用eval


也就是说,不要对您不完全信任的字符串使用eval。它很容易被滥用和利用。

对应用程序的结构一无所知,将该字符串转换为对象的简单方法是使用eval


也就是说,不要对您不完全信任的字符串使用eval。它很容易被滥用和利用。

以下是一个函数,该函数将字符串更改为有效的JSON,然后使用JSON.parse作为对象返回:

函数parsestr{ 变量t=, 特殊=“[]{}:,”, qt; str=str.split; forvar i=0;iconsole.logobj[0]。项[1]。名称//item2下面是一个函数,它将字符串更改为有效的JSON,然后使用JSON.parse作为对象返回:

函数parsestr{ 变量t=, 特殊=“[]{}:,”, qt; str=str.split; forvar i=0;iconsole.logobj[0]。项[1]。名称//item2MVC不是一个应用程序。这是一种神秘的图案。你正在使用ASP.NET MVC吗?你能更改该字符串的格式吗?MVC不是应用程序。这是一种神秘的图案。您正在使用ASP.NET MVC吗?您能更改该字符串的格式吗?很遗憾,JSON.parse在这里不起作用,因为该字符串不是有效的JSON。请注意,键周围缺少引号。@ntdb,因此您可能应该修改后端的某些内容,以便为以后的解析提供有效的JSON。另请参见,不幸的是,这里的JSON.parse不起作用,因为字符串不是有效的JSON。请注意,键周围缺少引号。@ntdb,因此您可能应该修改后端的某些内容,以便为以后的解析提供有效的JSON。另请参见Thank@ntdb,这就成功了。不管怎样,我会尝试以其他方式从我的应用程序中获取对象,只是从eval获取您的警告,不要滥用。谢谢@ntdb,这就成功了。无论如何,我会尝试以其他方式从我的应用程序中获取对象,只是接受eval的警告,不要滥用。