如何使用javascript删除动态创建的json对象中的多余引号?
Posted
技术标签:
【中文标题】如何使用javascript删除动态创建的json对象中的多余引号?【英文标题】:How to remove redundant quotation marks in dynamically created json object with javascript? 【发布时间】:2014-10-25 18:58:40 【问题描述】:以下问题:我想创建一个音频播放器,播放列表如下:http://www.davidorlowsky.com/player/demos/lark.htm
如果单击鼠标右键并查看源代码,您会看到播放列表具有以下形式:
[
title:"Gypsy Hora",
artist:"Trad.",
mp3:"http:///www.klezmorim-online.de/lark/gypsyhora.mp3"
,
title:"Sammy's Freilach",
artist:"Trad.",
mp3:"http:///www.klezmorim-online.de/lark/sammysfreilach.mp3"
,
...
]
我要做的是:通过目录解析动态创建这种播放列表。我就是这样做的:
$(document).ready(function ()
var sound_files = Array();
$.ajax(
url: "my_directory/",
success: function (data)
$(data).find("td > a").each(function ()
var file = $(this).attr("href");
if (file.substr((file.lastIndexOf('.') + 1)) == "mp3")
var mp3 = file;
var title= mp3.substr(0, mp3.lastIndexOf('.'));
//sound_files.push("title: \""+title+"\", mp3: \"my_directory/" + mp3 + "\"");
sound_files.push("mp3: \"my_directory/" + mp3 + "\"");
);
).done(function ()
console.log(sound_files);
new jPlayerPlaylist(
jPlayer: "#jquery_jplayer_1",
cssSelectorAncestor: "#jp_container_1"
, sound_files,
swfPath: "jplayer",
supplied: "oga,mp3"
);
);
);
这样不行,我认为是因为 json 对象中有多余的引号。生成的对象如下所示:
["mp3: "my_directory/my_file.mp3"", ...]
但应该看起来像:
[mp3: "my_directory/my_file.mp3", ...]
我该怎么做?
【问题讨论】:
不要那样做。创建一个纯 javascript 对象,然后在完成后将其转换为带有JSON.stringify()
的 JSON。容易得多(也更安全)。
【参考方案1】:
不要将对象作为字符串推送,而是将其作为对象推送。更改您要发送的这部分:
sound_files.push("mp3: \"my_directory/" + mp3 + "\"");
作为一个对象:
sound_files.push(mp3: "my_directory/" + mp3);
【讨论】:
非常感谢!那行得通!而且我担心我必须编写一个正则表达式函数:D 我会接受你的答案,因为你是最快的。【参考方案2】:试试sound_files.push(mp3: "my_directory/" + mp3);
【讨论】:
【参考方案3】:您当前正在创建包含构造对象所需的 JavaScript 源代码的字符串。
只需创建对象即可。
sound_files.push(mp3: "my_directory/" + mp3);
【讨论】:
【参考方案4】:要获得双引号,请添加此 + '"' 一切都会正常工作。但对象方法比创建字符串更清晰。
【讨论】:
以上是关于如何使用javascript删除动态创建的json对象中的多余引号?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用javascript动态地将json数组传递给数据表
javascript里面的数组,json对象,动态添加,修改,删除示例