PHP怎么生成去掉中括号的JSON

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP怎么生成去掉中括号的JSON相关的知识,希望对你有一定的参考价值。

主要是测试发现百度EChart的option不支持含有中括号的json数据,含有中括号会导致一些功能不能使用。

字母索引的数组的是花括号,数字索引是中括号

所以你构造数组进行json_encode的时候 就不要做这样的东西

$data[0]=array("img"=>"xx","url"=>"xx");
$data[1]=array("img"=>"xx","url"=>"xx");
$xx=array("url_list"=>$data);
json_encode($xx);这样就会生成中括号的了。。

追问

我查出原因了 不是你说这个原因哈,是因为数组嵌套多了一层才出现的这个问题

追答

我只能告诉你 这跟多维数组真的没关系。。。
我上面也描述错误了 是你json_encode 一个下标从0开始连续自增的数组 就会出现中括号的

参考技术A 重新写一个json生成的函数,在生成之后检测一下字符串的开头和结尾是否存在[]这两个括号,如果存在,就把这两个括号直接替换成,自己想要什么,自己用字符串函数去生成就是了 参考技术B echo json_encode(['hehe'],JSON_FORCE_OBJECT);
//加上 JSON_FORCE_OBJECT

参考技术C php中无法生成去掉括号的JSON,但是你可以把JSON当做一个字符串,然后把括号替换掉! 参考技术D 数组转过去就成中括号了吧。。。你去了数组或者增加数组再json就没事了 json就变成字典了

php操作JSON

js自带json的格式,即对象字面量,就是用json生成的对象。

JSON基本语法:
并列的数据使用逗号分隔。
映射用冒号表示
并列数据的集合(数组)用方括号表示
映射的集合(对象)用大括号表示

例如:

[
{"name":"小明",“age”:"23","sex":"男"}
{"name":"小红","age":"11","sex":"女"}
]

将php中的数组转化为JSON

$people = array(                
   array("name"=>"小明","age"=>"23","sex"=>"男"),                
   array("name"=>"小红","age"=>"11","sex"=>"女") );
$jsonObj = json_encode($people); var_dump($jsonObj);

显示结果如下:

string(101) 
"[{"name":"\u5c0f\u660e","age":"23","sex":"\u7537"},
{"
name":"\u5c0f\u7ea2","age":"11","sex":"\u5973"}]"

PHP中操作JSON的重要函数:
加密:json_encode()
解密:json_decode()

对象转换为JSON数据
注意,只转换共有变量,私有变量不转换。
例如:

class myjson{    
   public $name="小明";    
   public $age = "22";    
   public $sex = "男";    
   public function getPeople(){        
       echo $this->name.$this->age.$this->sex;    } }
$myobj = new myjson();
$myobj->getPeople();//输出:小明22男

$jsonObj = json_encode($myobj);
echo $jsonObj
//输出:{"name":"\u5c0f\u660e","age":"22","sex":"\u7537"}

将JSON转换为基本数据格式:

$jsonStr = '{"name":"qqq","age":"22"}';
$myArray = json_decode($jsonStr,true); print_r($myArray);    //输出:Array ( [name] => qqq [age] => 22 )
//如果不加true,则默认转换为对象类型

以上是关于PHP怎么生成去掉中括号的JSON的主要内容,如果未能解决你的问题,请参考以下文章

golang生成JSON及解析JSON

php替换括号中的内容

PHP CI框架中 怎么在->like中添加括号?

nodejs 连接MySQL后,输出数据带有RowDataPacket中括号大括号怎么去掉?

请教下json里用多个值的时候,啥时候用数组的中括号啊

在word中去掉所有括号中的不同内容,有简单方法吗