【问题标题】:Parse JSON Array Objetct into PHP script将 JSON 数组对象解析为 PHP 脚本
【发布时间】:2015-03-03 17:49:13
【问题描述】:

必须将此 Json 数组从 Android 发送到 php 脚本。在这种情况下,我发送了这个带有 1 个元素('CABECERA')的 json,在我的 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 数组 我做错了什么?

【问题讨论】:

标签: php android arrays json


【解决方案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) {
    
    }
    

在您的情况下,"object/array name" 恰好是 CABECERA

完整代码:

if( isset($_POST["JSON"]) ) {

    $data = $_POST["JSON"];
    $data = stripslashes($data);
    $jsonDecoded = json_decode($data);

    foreach ($jsonDecoded->**"object/array name"** as $object) {

    }
}

【讨论】:

    【解决方案2】:

    json 数组必须是字符串。

    函数 json_decode($data, true) - 查找第二个参数,它将返回关联数组中解析的 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);
    }
    

    【讨论】:

    • 我刚刚对代码进行了测试,它工作正常。你的 php 版本是多少?
    • 如何从这个 json 重新创建整个 CABECERA 对象?
    • 你必须使用 json_decode() 解析字符串,如果你的 php 版本低于 5.2,那么你必须查找一些 3rd 方 json 解析器或创建一个。
    【解决方案3】:

    确保要解码的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);
    }
    

    【讨论】:

      猜你喜欢
      • 2019-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 2020-05-02
      • 1970-01-01
      • 1970-01-01
      • 2014-12-02
      相关资源
      最近更新 更多