【问题标题】:exported json as string (not array)将 json 导出为字符串(不是数组)
【发布时间】:2010-12-13 01:59:57
【问题描述】:

有些人看到了该代码:

<?php 
echo stripslashes(json_encode(glob("photos-".$_GET["folder"].'/*.jpg')));
?>

它回显了一个非常好的完美字符串:

["photos-animaux/ani-01.jpg","photos-animaux/ani-02.jpg","photos-animaux/ani-02b.jpg","photos-animaux/ani-03.jpg","photos-animaux/ani-04.jpg","photos-animaux/ani-05.jpg","photos-animaux/ani-06.jpg","photos-animaux/ani-07.jpg","photos-animaux/ani-08.jpg","photos-animaux/ani-09.jpg","photos-animaux/ani-10.jpg","photos-animaux/ani-11.jpg","photos-animaux/ani-12.jpg","photos-animaux/ani-13.jpg","photos-animaux/ani-14.jpg"]

使用 json 编码它应该发送一个数组,所以变量 [0] 应该 = 到 photos-animaux/ani-01.jpg

现在它只是字符串的第一个字符..

如何将数组转换为字符串,以及如何在 javascipt 中将字符串转换为数组以获取值 [0] [1] 等。

问题是何时或为什么完美的数组无论如何都会转换为字符串?

【问题讨论】:

    标签: php javascript arrays string


    【解决方案1】:

    何时或为什么

    如果我理解正确,两者的答案都是json_encode():查看文档。将变量转换为字符串(通常称为 serializationflattening)是相当 common operation.

    【讨论】:

      【解决方案2】:

      使用JSON.parse()(来自可用的库here)比使用eval() 更可取,因为它只读取JSON 字符串,因此避免了与eval() 相关的固有安全风险。

      【讨论】:

        【解决方案3】:

        使用http://json.org/底部列出的JSON库之一

        【讨论】:

          【解决方案4】:

          为了将 JSON 编码的字符串解析为实际的 javascript 对象,您需要 eval() 返回的数据,以便 javascript 对数据执行:

          var data = eval(json_string)
          

          请记住,您应该只在您信任源并确定不存在脚本注入攻击的情况下对字符串运行 eval,因为 javascript 将运行字符串中存在的所有内容。

          【讨论】:

          • 不要这样做,使用可以安全评估数据的 JSON 库,而不是执行任何代码。
          猜你喜欢
          • 1970-01-01
          • 2014-04-15
          • 2017-07-13
          • 2011-10-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多