首页 > 解决方案 > 如何解析 Minecraft ops.json 以显示所有已操作用户、他们的 UUID 和已操作用户总数

问题描述

对不起,如果这个标题没有意义,我对在 PHP 中处理 JSON 文件非常陌生。我几乎到处查看并多次改写我的问题,我得到的每个答案似乎都不适用于我的 JSON 文件,不确定 Minecraft 是否做了不同的事情或者我是否遗漏了一些东西。感谢任何对此作出回应的人!

目标

在我的网站上以适当的格式列出我的 Minecraft 服务器上的所有操作员及其 UUID 和 OP 级别。我还想显示当前在服务器上操作的人数。

我想象的样子的示例照片(当然有更好的 CSS)

这是我的 PHP 代码

$serverdir = "../Minecraft Server/";
$json_url = $serverdir."ops.json";
$json = file_get_contents($json_url);
$data = json_decode($json, TRUE);

<?php
foreach ($data as $value) {
  echo "$value <br>";
}

这段代码目前只吐出 Array 5 次,我必须将$data更改为$data[ 1-5 ]才能获得实际输出,但它输出用户名、UUID 和级别,但我不知道如何格式化这种类型的输出。

这是 JSON 文件

[
  {
    "uuid": "3afa9281-a239-453f-9538-49b57d9f2d06",
    "name": "Deathx90",
    "level": 2,
    "bypassesPlayerLimit": false
  },
  {
    "uuid": "461e6427-1d5c-43e3-b4ee-f8361884c3a2",
    "name": "Command_String",
    "level": 2,
    "bypassesPlayerLimit": false
  },
  {
    "uuid": "1ab6c2d3-6cae-4937-81af-cf348ca0f16c",
    "name": "sarcazsm",
    "level": 2,
    "bypassesPlayerLimit": false
  },
  {
    "uuid": "83619f6c-d259-4da2-868b-eba807e15b37",
    "name": "Monke_Syndrome",
    "level": 2,
    "bypassesPlayerLimit": false
  },
  {
    "uuid": "584f7a2f-2f8c-453e-a459-6ce8a683f04c",
    "name": "Kreyo813",
    "level": 2,
    "bypassesPlayerLimit": false
  }
]

解决后:

这是最终产品,我还添加了一些额外的外观。

标签: phpjsonparsingvariablesminecraft

解决方案


您也可以使用 php 对象表示法

$Object = json_decode($json);
foreach($Object as $obj){
    echo $obj->uuid,'<br>',
         $obj->name,'<br>',
         $obj->level,'<br>';
}

您可以使用 count 来获取用户数,仅作为示例

$Object = json_decode($json);
$count = count($Object);

echo '<div><p>Number of OPed Users: (',$count,')</p></div>';
foreach($Object as $obj){
   echo '<div><p>',$obj->uuid,'<br>',
         $obj->name,'<br>',
         $obj->level,'</p></div><hr>';
}

推荐阅读