【问题标题】:How can parsing code with PHP json_decode如何使用 PHP json_decode 解析代码
【发布时间】:2020-12-23 21:44:13
【问题描述】:

我需要解析这个字符串并显示结果。

示例:

 "<string xmlns=\"http:\/\/schemas.microsoft.com\/2003\/10\/Serialization\/\">
{\"response\":\"0\",\"errorMsg\":\"\",\"lstsmi\":[{\"code_bordereau\":\"111111111\",\"etat\":\"yes\"},{\"code_bordereau\":\"222222222\",\"etat\":\"yes\"}]}<\/string>"

代码:

$response = json_decode($get_data, true);

echo $response["lstsmi"];

【问题讨论】:

    标签: php json xml


    【解决方案1】:

    您的响应字符串是 XML 格式,它有额外的 \ 标记首先您应该删除 \ 标记并使用 PHP 的 simplexml_load_string 方法读取 XML。所以试试下面的代码

    <?php
    $str="<string xmlns=\"http:\/\/schemas.microsoft.com\/2003\/10\/Serialization\/\">
    {\"response\":\"0\",\"errorMsg\":\"\",\"lstsmi\":[{\"code_bordereau\":\"111111111\",\"etat\":\"yes\"},{\"code_bordereau\":\"222222222\",\"etat\":\"yes\"}]}<\/string>";
    $str=str_replace("\\","",$str);
    $xml = simplexml_load_string($str);
    
    //as a xml
    echo "<pre>";
    print_r($xml);
    echo "<pre>";
    
    //as a json
    echo $xml[0];
    echo "<br/>";
    
    //as an array
    $response = json_decode($xml[0]);
    echo "<pre>";
    print_r($response);
    echo "<pre>";
    

    结果

    SimpleXMLElement Object
    (
        [0] => 
    {"response":"0","errorMsg":"","lstsmi":[{"code_bordereau":"111111111","etat":"yes"},{"code_bordereau":"222222222","etat":"yes"}]}
    )
    {"response":"0","errorMsg":"","lstsmi":[{"code_bordereau":"111111111","etat":"yes"},{"code_bordereau":"222222222","etat":"yes"}]}
    stdClass Object
    (
        [response] => 0
        [errorMsg] => 
        [lstsmi] => Array
            (
                [0] => stdClass Object
                    (
                        [code_bordereau] => 111111111
                        [etat] => yes
                    )
    
                [1] => stdClass Object
                    (
                        [code_bordereau] => 222222222
                        [etat] => yes
                    )
    
            )
    
    )
    

    【讨论】:

      【解决方案2】:

      它不起作用,因为您的代码不是 json 格式。 首先,你必须清除你的代码。

      试试这个,希望对你有帮助

      <?php
      $str = "<string xmlns=\"http:\/\/schemas.microsoft.com\/2003\/10\/Serialization\/\">
          {\"response\":\"0\",\"errorMsg\":\"\",\"lstsmi\":[{\"code_bordereau\":\"111111111\",\"etat\":\"yes\"},{\"code_bordereau\":\"222222222\",\"etat\":\"yes\"}]}<string>";
          
      @$doc = new DOMDocument();
      @$doc->loadHTML($str);
      $real_json_string = $doc->textCotent;
      $json = json_decode($real_json_string, true);
      echo print_r($json);
      ?>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多