将JSON数组对象解析为PHP脚本

时间:2015-03-03 17:49:14

标签: php android arrays json

必须将这个Json数组从Android发送到php脚本。在这种情况下,我发送这个json与1元素('CABECERA'),在我的PHP脚本中,我不知道如何解析使用。

如何从这个json重新创建一个完整的CABECERA对象?

 $_jsone_str= [ {\"CABECERA\":[{\"CustomerID\":\"1\",\"datetime\":\"\",\"fecha\":\"150303122830\",\"idadmin\":\"3\",\"idcli\":\"4\",\"msj\":\"\",\"nroped\":\"\",\"orderId\":\"1\",\"puntoVentaID\":\"AMALGAME\",\"status\":\"0\",\"total\":\"0.0\"}]}]

$json = json_decode($_jsone_str);

foreach ( $json ->CABECERA as $decode ){
   print_r($decode);
}

如何解析这个json数组 我做错了什么?

3 个答案:

答案 0 :(得分:1)

我通常做的是以下内容:

  1. 我首先检查POST HEADER POST 的POST JSON是否存在:

    if( isset($_POST["POST"]) ) {
    
    }
    
  2. 我解除分配JSON文件:

    $data = $_POST["JSON"];
    $data = stripslashes($data);
    $jsonDecoded = json_decode($data);
    
  3. 然后我解析JSON数据:

    foreach ($jsonDecoded->**"object/array name"** as $object) {
    
    }
    
  4. 在您的情况下,"对象/数组名称" 恰好是 CABECERA

    完整代码:

    if( isset($_POST["JSON"]) ) {
    
        $data = $_POST["JSON"];
        $data = stripslashes($data);
        $jsonDecoded = json_decode($data);
    
        foreach ($jsonDecoded->**"object/array name"** as $object) {
    
        }
    }
    

答案 1 :(得分:0)

json数组必须是字符串。

函数json_decode($ data,true) - 查找第二个paremeter,它将返回关联数组中已解析的json,否则它将作为对象。

    $json = "[ {\"CABECERA\":[{\"CustomerID\":\"1\",\"datetime\":\"\",\"fecha\":\"150303122830\",\"idadmin\":\"3\",\"idcli\":\"4\",\"msj\":\"\",\"nroped\":\"\",\"orderId\":\"1\",\"puntoVentaID\":\"AMALGAME\",\"status\":\"0\",\"total\":\"0.0\"}]}]";

foreach ( json_decode($json, true) as $decode ){
   print_r($decode);
}

答案 2 :(得分:0)

确保要解码的JSON是一个字符串:

$_jsone_str= "[ {\"CABECERA\":[{\"CustomerID\":\"1\",\"datetime\":\"\",\"fecha\":\"150303122830\",\"idadmin\":\"3\",\"idcli\":\"4\",\"msj\":\"\",\"nroped\":\"\",\"orderId\":\"1\",\"puntoVentaID\":\"AMALGAME\",\"status\":\"0\",\"total\":\"0.0\"}]}]";

$json = json_decode($_jsone_str);

检查结果:

print_r($json);

以正确的方式调用它:

foreach ( $json as $decode ){
   print_r($decode->CABECERA);
}