PHP JSON获取对象的名称
有两种可能性。如果使用的是PHP JSON获取对象的名称,php,json,object,Php,Json,Object,有两种可能性。如果使用的是json\u decode(),则可以传入true作为第二个参数,将数据解析为关联数组 $key = key(get_object_vars($_json)); $_json->{$key}[0]->img; 您还可以从这样的变量访问对象属性 $data = json_decode($myJson, true); print_r( $data['image_header'] ); 如果“您不知道它是什么”,您的意思是您根本不知道键,那么您可以使用我的第
json\u decode()
,则可以传入true作为第二个参数,将数据解析为关联数组
$key = key(get_object_vars($_json));
$_json->{$key}[0]->img;
您还可以从这样的变量访问对象属性
$data = json_decode($myJson, true);
print_r( $data['image_header'] );
如果“您不知道它是什么”,您的意思是您根本不知道键,那么您可以使用我的第一个示例,并使用array\u values()
按索引获取值
$myProperty = 'image_header';
print_r( $data->$myProperty );
您可以通过以下方式方便地执行此操作:
如果您不知道属性的名称,可以使用PHP,或者更简单地使用 get_object_vars()可能就是您在这里寻找的对象-它“返回范围中指定对象的已定义对象可访问的非静态属性的关联数组。如果未为属性赋值,则将返回空值。”因此,您将获得关联数组中返回的属性名称及其值
$key = key(get_object_vars($_json));
$_json->{$key}[0]->img;
或者,您可以使用一些PHP的反射魔法,尽管根据您的最终目标,这可能有点过分。反射类功能非常强大,如果您对要实现的目标有更复杂的需求,那么它可能值得使用。例如:
$propertyName = key(get_object_vars($object));
这是对象的唯一属性吗?如果没有,你想要哪一个的名字?它是唯一的一个。我试图避免foreach循环;-)我添加了一个答案,但恐怕它也相当于
foreach
内部:)可以接受;-)谢谢汉克斯,去Jon's,这是最干净的解决方案:)
$propertyName = key(get_object_vars($object));
// let's say $obj is the object you provided in your question
// Instantiate the reflection object
$reflector = new ReflectionClass($obj);
// Get properties of $obj, returned as an array of ReflectionProperty objects
$properties = $reflector->getProperties();
foreach ( $properties as $property ) {
echo $property->getName(); // In your example, this would echo 'image_header'
}