【问题标题】:php open a .json string file and convert to arrayphp 打开一个 .json 字符串文件并转换为数组
【发布时间】:2015-07-05 02:55:28
【问题描述】:
<?php
$postcode=$_POST['script'];

// $myfile = file_get_contents("./aircondata/".$postcode.".json");
// echo $myfile;

$myfile = '{
  "1": { "Brand":"MITSUBISHI HEAVY INDUSTRIES, LTD.", "Model_No":"SRK20ZMXA-S / SRC20ZMXA-S", "C.Power_Inp_Rated":0.35, "H.Power_Inp_Rated":0.45, "KWH":1881.95, "Cost":564.585},
  "2": { "Brand":"MITSUBISHI HEAVY INDUSTRIES LTD.", "Model_No":"SRK20ZIX-S", "C.Power_Inp_Rated":0.35, "H.Power_Inp_Rated":0.45, "KWH":1881.95, "Cost":564.585},
  "3": { "Brand":"MITSUBISHI HEAVY INDUSTRIES LTD.", "Model_No":"SRK20ZJX-S", "C.Power_Inp_Rated":0.35, "H.Power_Inp_Rated":0.45, "KWH":1881.95, "Cost":564.585},
  "4": { "Brand":"TOSHIBA", "Model_No":"RAS-07PKVP-E/PAVP-E", "C.Power_Inp_Rated":0.355, "H.Power_Inp_Rated":0.44, "KWH":1908.835, "Cost":572.6505},
  "5": { "Brand":"CARRIER", "Model_No":"50PCH006", "C.Power_Inp_Rated":0.4, "H.Power_Inp_Rated":0.4, "KWH":2150.8, "Cost":645.24}
}';


$ac_decoded = json_decode($myfile, true);

echo $ac_decoded;
foreach ($ac_decoded as $key => $value) {
    if($key=="1"){
        echo $value["Brand"];

    }

}
echo "okay";

fclose($myfile);

?>

我的问题是,当 json 数组存在于同一个 .php 文件中时,上述代码有效,但注释掉的代码(使用 file_get_contents)不适用于 json_decode,仅在回显时有效。 请帮助...谢谢!

回答第一个回复的建议,下面是.json文件,不知道格式是否正确

'{
  "1": { "Brand":"MITSUBISHI HEAVY INDUSTRIES, LTD.", "Model_No":"SRK20ZMXA-S / SRC20ZMXA-S", "C.Power_Inp_Rated":0.35, "H.Power_Inp_Rated":0.45, "KWH":1881.95, "Cost":564.585},
  "2": { "Brand":"MITSUBISHI HEAVY INDUSTRIES LTD.", "Model_No":"SRK20ZIX-S", "C.Power_Inp_Rated":0.35, "H.Power_Inp_Rated":0.45, "KWH":1881.95, "Cost":564.585},
  "3": { "Brand":"MITSUBISHI HEAVY INDUSTRIES LTD.", "Model_No":"SRK20ZJX-S", "C.Power_Inp_Rated":0.35, "H.Power_Inp_Rated":0.45, "KWH":1881.95, "Cost":564.585},
  "4": { "Brand":"TOSHIBA", "Model_No":"RAS-07PKVP-E/PAVP-E", "C.Power_Inp_Rated":0.355, "H.Power_Inp_Rated":0.44, "KWH":1908.835, "Cost":572.6505},
  "5": { "Brand":"CARRIER", "Model_No":"50PCH006", "C.Power_Inp_Rated":0.4, "H.Power_Inp_Rated":0.4, "KWH":2150.8, "Cost":645.24}
}'

【问题讨论】:

  • 代码看起来不错。仔细检查文件内容是有效的 JSON。或在此处发布文件内容。顺便说一句,您可能会重新考虑从用户输入的路径中打开和读取文件内容,而无需进行某种验证。想想是否有人向“脚本”发布了一个以“../../”开头的值
  • 包含文件时是否收到任何错误或通知?
  • $myfile = fopen("./aircondata/".$postcode.".json", "r") or die("无法打开文件!");
  • 你的json文件格式不正确。删除单引号“'”
  • @Rasclatt 是对的,.json 文件中的单引号需要去掉。这将引发malformed JSON 错误

标签: php arrays json


【解决方案1】:

参考我现有的Answer.. 你在file_get_contents 调用中有一个语法:

$myfile = file_get_contents("./aircondata/".$postcode.".json");

您必须按如下方式转义特殊字符:

$myfile = file_get_contents(".//aircondata//".$postcode.".json");

P.S.:您一直关注我认为在您的服务器中未激活的 php 错误报告。

更新:

另一个可能的原因可能是包含文件的 JSON 内容的格式,请确保您validate the contents

如果该文件中的数据确实用单引号括起来,那么这是一个无效的JOSN 文件。

【讨论】:

  • 修改后还是不行...不过谢谢!
  • $ac_decoded 数组仍为 NULL,因此我无法回显该数组中的任何值
  • var_dump($myfile); 的输出是什么?
  • 嗨@ash_8247 主要错误是我的.json 文件,如上所示.. 但感谢大家的帮助:)
猜你喜欢
  • 2016-04-28
  • 1970-01-01
  • 2018-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-26
  • 2019-10-01
  • 2014-07-11
相关资源
最近更新 更多