如何从 PHP [Json results from open alpr] 中读取这种类型的 JSON 文件?

Posted

技术标签:

【中文标题】如何从 PHP [Json results from open alpr] 中读取这种类型的 JSON 文件?【英文标题】:how to read this type of JSON file from PHP [Json results from open alpr ]? 【发布时间】:2020-11-05 14:59:50 【问题描述】:

我需要知道如何提取 JSON 数据,例如下面发布到 php 的 JSON 格式,我正在尝试使用 php 脚本将以下 Json 文件键值数据提取到 mysql。以下 JSON 来自 openalpr,在命令行上使用 alpr 导出为 json

  "version": 2,
  "data_type": "alpr_results",
  "epoch_time": 1594858871000,
  "img_width": 3232,
  "img_height": 3232,
  "processing_time_ms": 522.5,
  "regions_of_interest": [],
  "results": [
    
      "plate": "QAA1989C",
      "confidence": 90.09095,
      "matches_template": 0,
      "plate_index": 0,
      "region": "my",
      "region_confidence": 0,
      "processing_time_ms": 42.125999,
      "requested_topn": 10,
      "coordinates": [
        
          "x": 1149,
          "y": 2071
        ,
        
          "x": 1836,
          "y": 2071
        ,
        
          "x": 1836,
          "y": 2268
        ,
        
          "x": 1149,
          "y": 2268
        
      ]
    
  ]

我得到的只是像这样的错误Illegal string offset 'result 我测试的显示车牌号的php代码: 有人可以帮助指导我如何使用 php 脚本获取 json 数组中子数组的值吗? 谢谢**

我使用下面的代码不确定子元素的键值是什么错误

$filename = "results.json";
          $data = file_get_contents($filename); //Read the JSON file in PHP
          $array = json_decode($data, true); //Convert JSON String into PHP Array
          
          foreach ($data['results']['results'] AS $d)
          
            echo $d['plate'];
            

【问题讨论】:

使用 json_decode 我添加了 Json_decode 但 json 键值格式有点难以将值提取到 PHP 数组中 【参考方案1】:

您的 json 字符串错误,第一行缺少

$json = '

    "version": 2,
    "data_type": "alpr_results",
    "epoch_time": 1594858871000,
    "img_width": 3232,
    "img_height": 3232,
    "processing_time_ms": 522.5,
    "regions_of_interest": [],
    "results": [
        
            "plate": "QAA1989C",
            "confidence": 90.09095,
            "matches_template": 0,
            "plate_index": 0,
            "region": "my",
            "region_confidence": 0,
            "processing_time_ms": 42.125999,
            "requested_topn": 10,
            "coordinates": [
                
                    "x": 1149,
                    "y": 2071
                ,
                
                    "x": 1836,
                    "y": 2071
                ,
                
                    "x": 1836,
                    "y": 2268
                ,
                
                    "x": 1149,
                    "y": 2268
                
            ]
        
    ]

';

$data = json_decode($json,true);

foreach ($data['results'] AS $d) 
    echo $d['plate'];

【讨论】:

还是有问题非法字符串偏移'plate' <?php $connect = mysqli_connect("localhost", "root", "", "plates"); $filename = "results.json"; $data = file_get_contents($filename); $array = json_decode($data, true); echo($data['results'][0]['plate']); ?>

以上是关于如何从 PHP [Json results from open alpr] 中读取这种类型的 JSON 文件?的主要内容,如果未能解决你的问题,请参考以下文章

PHP从Mysql查出来的数据转换成json格式中文乱码怎么解决

JSON_CONTAINS 无法从 MySQL 中找到

从 php 到 iOS 应用程序的不完整 json 响应

如何使用 PHP 将 JSON 字符串数据转换为数组?

从 JSON iOS 中提取值

如何从 php 获取输出到 typeahead?