如何将对象转换为特定的JSON格式?

时间:2017-04-18 14:55:52

标签: php json object

json_encode将对象转换为:

{
  "height":10,
  "width":20,
  "depth":5
}

但我需要它包括对象类名:

{
  "cuboid":
  {
    "height":10,
    "width":20,
    "depth":5
  }
}

4 个答案:

答案 0 :(得分:2)

public function toJson() {
    return json_encode([get_class($this) => $this]);
}

答案 1 :(得分:0)

希望这会帮助你。在这里,我们将json转换为array并将其放入字段数组cuboid

Try this code snippet here

<?php

ini_set('display_errors', 1);

$json='{
  "height":10,
  "width":20,
  "depth":5
}';
$result["cuboid"]=json_decode($json,true);
echo json_encode($result,JSON_PRETTY_PRINT);

答案 2 :(得分:0)

您可以使用get_class获取对象的类名。

$json = json_encode(array(get_class($object) => $object));

答案 3 :(得分:0)

json_encode

的规则
  • 如果您有一个对象,它将被编码为{'pro1':'value'}
  • 如果你有一个数组,它将被编码为['value']
  • 如果您有一个字符串,它将被编码为'value'

注意:如果你在php中有一个assoc-array,它就成了json中的一个对象!如果你有一个索引数组,它将是json中的一个数组。不要混合索引&amp; assoc命令!

测试这个糟糕的实践:echo json_encode(array('foo' => 'bar',1,2));结果是这个错误的语法{"kitten":"test","0":1,"1":2}(属性名称不应该是数字!!!)

因此,如果您想要和属性名称下的对象执行此操作

$obj = new stdClass();
$obj->prop = array(1,2,'a');
$newObject = new stdClass();
$newObject->objname = $obj;

print_r(json_encode($newObject));

成为:{'objname':{'prop':[1,2,'a']}}

度过愉快的一天: - )