繁体   English   中英

需要帮助以PHP解析JSON来构建URL

[英]Need help parsing JSON with PHP to build an URL

我有一个看起来像这样的json文件:

{
"name": "Star_Wars",
"Level": true,
"condition": "HOT",
"actions": [
    {
        "index": 0,
        "name": "Sword_hit",
        "expectedModelName": "SwordModel",
        "params": [
            {
                "name": "LANGUAGE",
                "values": [
                    {
                        "value": "GB"
                    }
                ]
            },
            {
                "name": "PLANET_VERSION",
                "values": [
                    {
                        "value": "HUTTA"
                    }
                ]
            }
        ],
        "newParameters": [],
        "checks": []
    },
    {
        "index": 1,
        "name": "Sword_bash",
        "expectedModelName": "SwordModel2",
        "params": [
            {
                "name": "LANGUAGE",
                "values": [
                    {
                        "value": "IT"
                    }
                ]
            },
            {
                "name": "PLANET_VERSION",
                "values": [
                    {
                        "value": "SCHNUTTA"
                    }
                ]
            }
        ],
        "newParameters": [],
        "checks": []
    }
]

我试图用PHP解析它并从中构建URL。 每个“操作”都是一个URL,参数位于“参数”部分中。 因此,这两个URL应该是:

index0:LANGUAGE = GB&PLANET_VERSION = HUTTA

索引1:LANGUAGE = IT&PLANET_VERSION = SCHNUTTA

到目前为止,我的代码如下:

<?php
$json = file_get_contents("data.json");
$jsonIterator = new RecursiveIteratorIterator(
    new RecursiveArrayIterator(json_decode($json, TRUE)),
    RecursiveIteratorIterator::SELF_FIRST);

echo"http://www.myurl.de/test.php?";
foreach ($jsonIterator as $key => $val) {
    if(is_array($val)) {
        echo "$key:\n";
    } else {
        echo "$key=$val&";
    }
}
?>

它按设计工作,但不符合要求;-)我只需要“参数”来构建url。 但是,如何实现仅针对“参数”中的“名称”和“值”的条件?

请检查这个简单的解决方案:

$data = json_decode($json);
$urls = array();
foreach($data->actions as $k1=>$v1) {
    $urls[$k1] = '';
    foreach($v1->params as $k2=>$v2) {
        $urls[$k1].= $v2->name.'='.$v2->values[0]->value.'&';
    }
    $urls[$k1] = rtrim($urls[$k1],'&');
}
print_r($urls);

暂无
暂无

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

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