【问题标题】:bool(false) when var_dump($json_array)bool(false) 当 var_dump($json_array)
【发布时间】:2017-10-23 21:34:48
【问题描述】:

我正在尝试从查询中检索一个数组,查询没问题,我得到了一个 assoc_array,当我 var_dump() 说数组一切正常时。

json_enconde($assoc_array)之后的那个数组

但是,当我执行 var_dump($json_array) 时,我得到一个 bool(false)

来自查询的正常 assoc_array 是:

array(2) { [0]=> array(4) { ["nombre"]=> string(13) "Raxo Pimienta" ["descripcion"]=> string(52) "Ternera en salsa a la pimienta acompa�ada de patatas" ["precio"]=> string(2) "14" ["id"]=> string(1) "1" } [1]=> array(4) { ["nombre"]=> string(14) "Ensalada Cesar" ["descripcion"]=> string(58) "Lechuga, bacon, crotones y salsa cesar con queso parmesano" ["precio"]=> string(1) "8" ["id"]=> string(1) "2" } } 

【问题讨论】:

  • json_enconde($assoc_array) 你拼错了。

标签: php json mysqli


【解决方案1】:

JSON 不是二进制安全的。有很多二进制数据根本无法编码为 json。另一方面,PHP 字符串是完全二进制安全的,它们可以包含任何字节序列(与 json 不同)。您的数组可能包含一个(php)字符串,其字节序列无法进行 json 编码。尝试var_dump(json_last_error_msg());,它应该说明编码失败的原因。您可以尝试使用 JSON_PARTIAL_OUTPUT_ON_ERROR 标志,但最好找到此 json 不兼容数据的来源,并将其编码为 json 安全的内容。 ps,就像 php 字符串一样,base64 编码是二进制安全的。找到源代码后,可以将其编码为 base64,然后可以将其添加到 json 中。

编辑:与 json 不兼容的字符可能是 ["descripcion"]:acompa�ada 中的那个奇怪字符 - 并表明您在其他地方遇到了编码问题。 (连接到 sql db 时是否使用 utf8 字符集?db 表是否使用 utf8 排序规则?看起来某处存在编码错误,导致“描述”字符串损坏)

【讨论】:

    【解决方案2】:

    问题是数据库数据中的“ñ”字符,仅此而已。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-03
      • 2012-03-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多