从json_encode脚本创建数组,不带双引号

时间:2015-05-06 14:13:17

标签: javascript jquery arrays json

*这个问题是因为我当时无法控制JSON输出而创建的。所以不得不使用JavaScript。如果您可以控制JSON,请参阅Mike Brant的回答。但是Oka的回答解决了我的问题,这是一个很好的解决方案..

我试图创建一个不包含JSON双引号的数组。

我正在获取JSON并尝试构建一个可以将非引用项目推送到数组的系统。

由于我无法控制JSON,我将其变为字符串并删除双引号并再次将其拆分为数组。

问题是这仍然输出双引号?

var artistJSON = '<?php echo $favourites ? json_encode($favourites->artists) : '[]' ?>';
var artistIds = artistJSON.replace(/"/g, '');
var artistAry = artistIds.split(',');
console.log(artistJSON);
console.log(artistIds);
console.log(artistAry);

控制台的结果;

["31","41","56","38","","27"]
[31,41,56,38,,27] //This is a string. I want an array.
["[31", "41", "56", "38", "", "27]"]

https://jsfiddle.net/1pu6nqu2/

任何帮助都会非常感激。

*只是为了确认,我的游戏目标是从数组中删除双引号。

5 个答案:

答案 0 :(得分:2)

如果您使用PHP中的json_encode()来动态填充数据结构,则不应填充到字符串中然后解析该字符串,只需直接写入对象/数组文字。所以改变这个:

var artistJSON = '<?php echo $favourites ? json_encode($favourites->artists) : '[]' ?>';

到这个

var artist = <?php echo $favourites ? json_encode($favourites->artists) : '[]' ?>;

我所做的就是删除单引号(并将变量名更改为更合适的名称)。现在你有了一个数据结构,你可以直接在javascript中使用,而无需额外的解析。

答案 1 :(得分:2)

假设您正在尝试将字符串化JSON转换为数组,并将数组中的字符串转换为数字。您可以使用.map().filter()的某种组合来实现此目标。

http://jsbin.com/yojibeguna/1/edit?js,console

var artistJSON = JSON.parse('["31","41","56","38","","27"]')
                     .map(function (e) { return parseInt(e); })
                     .filter(function (e) { return isFinite(e); });

console.log(artistJSON, typeof artistJSON[0]);

答案 2 :(得分:1)

如果json数据已经存储为JSON数据,那么不需要用php重新编码它。只需将其回显,它就会被分配给您的变量artistJSON

示例:

var artistJSON = <?php echo $favourites ? ($favourites->artists) : '[]' ?>;

编辑:正如Mike Brant所说,如果它尚未存储为JSON文字数据(在数据库中,或者诸如此类),则需要对其进行重新编码。我假设它是。

答案 3 :(得分:0)

您只需运行JSON.parse即可将字符串转换为数组。

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse

答案 4 :(得分:0)

试试这个:

var artistJSON = '<?php echo $favourites ? json_encode($favourites->artists) : '[]' ?>';
var artists = JSON.parse( artisanJSON );

console.log( artists );

参考:How to json_encode php array but the keys without quotes