繁体   English   中英

在解码和获取 json 值时出现错误?

[英]while decoding and getting json value i am getting error?

在数据库表的productoptions 列中,我插入如下值

[{"value":["Color","size",""]},{"Color":["Red","Blue","white"],"size":["L","XL"]},{"type":["Dropdown","Checkbox",""]}]

之后我得到了选项值

$opt =$value->ProductOptions;

然后我使用以下方法解码 json 值

$jsonvalue = json_decode($opt);

然后我得到了如下价值。

Array ( [0] => stdClass Object ( [value] => Array ( [0] => Color [1] => size [2] => ) ) [1] => stdClass Object ( [Color] => Array ( [0] => Red [1] => Blue [2] => white ) [size] => Array ( [0] => L [1] => XL ) ) [2] => stdClass Object ( [type] => Array ( [0] => Dropdown [1] => Checkbox [2] => ) ) )

解码后,我试图获取特定对象(颜色、大小等)

foreach ($jsonvalue as $key => $values) {
  print_r($vales->Color);
}

但我的错误如下:

消息:未定义的属性:stdClass::$Color

我得到了价值

value => color,size 

之后需要动态传递以上值并获得

color => red,blue,white 

JSON 结构有点奇怪,你有混合的数据和结构。

但是如果你使用print_r($jsonvalue); 您可以看到数组和对象的布局方式,这表明[0]项具有value元素,而[1]具有由值指示的数据,因此...

value元素中的一项是"" ,这可能会导致问题,因此您可能需要添加检查以忽略空项。

foreach ( $jsonvalue[0]->value as $types ) {
    if ( !empty($types) )   {
        echo $types.PHP_EOL;
        print_r($jsonvalue[1]->{$types});
    }    
}

给你...

Color
Array
(
    [0] => Red
    [1] => Blue
    [2] => white
)
size
Array
(
    [0] => L
    [1] => XL
)

尝试 :

foreach ($jsonvalue as $key => $values) {
  print_r($vales->{$key});
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM