如何用PHP解析这个多维JSON以获取正确的数组?
我有JSON,它的格式与下面的示例类似,这是循环整个文件以捕获“IWANTTHIS”值的正确方法?所有数组在JSON中都处于同一级别(“some:products”)。今天下午对我来说太复杂了如何用PHP解析这个多维JSON以获取正确的数组?,php,arrays,json,parsing,formatting,Php,Arrays,Json,Parsing,Formatting,我有JSON,它的格式与下面的示例类似,这是循环整个文件以捕获“IWANTTHIS”值的正确方法?所有数组在JSON中都处于同一级别(“some:products”)。今天下午对我来说太复杂了 { "type": "page", "pageType": "section", "_links": {}, "_embedded": { "somkindof:blocks": [ { "somevalue": 25, "_embedded": {
{
"type": "page",
"pageType": "section",
"_links": {},
"_embedded": {
"somkindof:blocks": [
{
"somevalue": 25,
"_embedded": {
"some:products": [
{
"system": {
"availability": {},
"IWANTTHIS": "20284",
"hhhh": []
},
....
我尝试了类似的方法,但无法捕获像我的示例中那样格式化的值
$jfo = json_decode($vcurl);
$channel = $jfo->_embedded->[somkindof:blocks];
var_dump $channel;
如果将JSON解码为关联数组,事情会变得更容易 (甚至对象也将成为关联数组,您可以使用相同的语法解析整个对象树) 然后使用方括号语法解析数组 请注意,
“somkindof:blocks”和“some:products”
都是规则数组(项目的有序列表),因此您必须解析其中的每个项目(使用简单的foreach
)
说你可能有很多“我想要这个”
如果将JSON解码为关联数组,事情会变得更容易
(甚至对象也将成为关联数组,您可以使用相同的语法解析整个对象树)
然后使用方括号语法解析数组
请注意,“somkindof:blocks”和“some:products”
都是规则数组(项目的有序列表),因此您必须解析其中的每个项目(使用简单的foreach
)
说你可能有很多“我想要这个”
Thx此工具:
Thx此工具:
添加true
作为json_decode的第二个参数,将其解码为数组而不是对象
<?php
$json = '{
"type": "page",
"pageType": "section",
"_links": {},
"_embedded": {
"somkindof:blocks": [
{
"somevalue": 25,
"_embedded": {
"some:products": [
{
"system": {
"availability": {},
"IWANTTHIS": "20284",
"hhhh": []
}
}
]
}
}
]
}
}';
$jfo = json_decode($json, true);
$channel = $jfo['_embedded']['somkindof:blocks'];
print_r($channel);
添加true
作为json_decode的第二个参数,将其解码为数组而不是对象
<?php
$json = '{
"type": "page",
"pageType": "section",
"_links": {},
"_embedded": {
"somkindof:blocks": [
{
"somevalue": 25,
"_embedded": {
"some:products": [
{
"system": {
"availability": {},
"IWANTTHIS": "20284",
"hhhh": []
}
}
]
}
}
]
}
}';
$jfo = json_decode($json, true);
$channel = $jfo['_embedded']['somkindof:blocks'];
print_r($channel);
所有评论都建议使用数组选项,方法是为函数提供true
但是,如果您希望维护stdClass
,请使用大括号
例如:
所有注释都通过提供true
来建议使用数组选项
但是,如果您希望维护stdClass
,请使用大括号
例如:
试试$channel=$jfo->\u embedded->{'somkindof:blocks'}
(您可能会发现将其用作数组更容易,请查看PHP文档中的json_解码参数2)试试$channel=$jfo->\u embedded->{'somkindof:blocks'}
(您可能会发现将其用作数组更容易,请查看PHP文档中的json_解码参数2)
<?php
$json = '{
"type": "page",
"pageType": "section",
"_links": {},
"_embedded": {
"somkindof:blocks": [
{
"somevalue": 25,
"_embedded": {
"some:products": [
{
"system": {
"availability": {},
"IWANTTHIS": "20284",
"hhhh": []
}
}
]
}
}
]
}
}';
$jfo = json_decode($json, true);
$channel = $jfo['_embedded']['somkindof:blocks'];
print_r($channel);
$jfo = json_decode($json);
foreach($jfo->_embedded->{'somkindof:blocks'} as $block) {
echo $block->{'somSomething is wrongue'};
}