php读取本地json文件并渲染,修改,增加字段

580 阅读1分钟

读取文件渲染

1.通过file_get_contents将整个文件读入一个字符串

2.json_decode将json数据转为数组,对JSON 格式的字符串进行解码

<?php
echo "Hello!<br/>";
$json_string = file_get_contents('./info.json');
$data = json_decode($json_string, true);
var_dump($data["company"]['value']); 
// print_r($data["company"]['value']); 

json模拟数据

{
  "enterprise_type": {
    "type": "企业类型",
    "value": "企业"
  },
  "credit": {
    "type": "统一社会信用代码",
    "value": "8848668485548"
  },
  "company": {
    "type": "公司名称",
    "value": "雪梨科技"
  },
  "Range": {
    "type": "经营范围",
    "value": ""
  },
  "address": {
    "type": "地址",
    "value": "北北市西西村东东街001号"
  },
  "account_opening": {
    "type": "开户行",
    "value": "农农银行股份有限公司西西村支行"
  }
}

输出

image.png


增加

向info.json文件增加一个describe字段

file_put_contents(文件,值)将一个字符串写入文件

<?php
echo "Hello!<br/>";
$json_string = file_get_contents('./info.json');
$data = json_decode($json_string, true);

$code = "describe";//动态值
$data[$code] = array("type" => "描述", "value" => "Hello PHP!"); //增加
$json_string = json_encode($data);
file_put_contents("./info.json", $json_string);

var_dump($data); 

此时发现页面正常输出并成功添加了

image.png 但是打开json文件,发现是一些看不懂的格式。

image.png

这是由于json_encode来处理中文的时候, 中文都会被编码, 变成不可读的

解决办法

升级php

检查PHP版本

$ php -v

PHP5.4以上新增了一个选项: JSON_UNESCAPED_UNICODE,JSON不编码Unicode

修改json_encode,添加 JSON_UNESCAPED_UNICODE

$json_string = json_encode($data,JSON_UNESCAPED_UNICODE);

修改

php修改json数据某个字段

$data[$code]["value"] = "哈喽!你好";//修改

完整代码

<?php
echo "Hello!<br/>";
$json_string = file_get_contents('./info.json');
$data = json_decode($json_string, true);

$code = "describe"; //动态值
// $data[$code] = array("type" => "描述", "value" => "Hello PHP!"); //增加
$data[$code]["value"] = "哈喽!你好"; //修改
$json_string = json_encode($data, JSON_UNESCAPED_UNICODE);
file_put_contents("./info.json", $json_string);

var_dump($data); 
// print_r($data["company"]['value']);