如何使用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数组传递给数据表

javascript里面的数组,json对象,动态添加,修改,删除示例

从 JSON 使用 Javascript 创建动态关联数组

在 JavaScript 中动态创建 JSON 数组键 [重复]

如何使用 JavaScript 创建 Chrome 扩展来隐藏或删除页面元素?