Я заметил некоторые проблемы с вашим файлом JSON. У вас есть лишние запятые и пропущенная скобка.
Вот версия без проблем со структурой.
{
"accountId": "6df47486-86d6-4b4b-a5e7-4c6b1b8c9322",
"user": "greenz_lewis",
"stats": {
"p2": {
"score": {
"label": "Score",
"category": "General",
"rank": 9074838
},
"top1": {
"label": "Wins",
"value": "33"
}
}
}
}
Тогда я бы посоветовал сделать маленькие шаги.
Получить содержимоефайла
Сначала получите содержимое файла (независимо от его расширения). Вы можете достичь этой цели, используя, например, функцию file_get_contents
.
<?php
$content = file_get_contents("file.json");
var_dump($content);
даст
string(258) "{
"accountId": "6df47486-86d6-4b4b-a5e7-4c6b1b8c9322",
"user": "greenz_lewis",
"stats": {
"p2": {
"score": {
"label": "Score",
"category": "General",
"rank": 9074838
},
"top1": {
"label": "Wins",
"value": "33"
}
}
}
}
"
Разбор содержимого файла JSON
Затем разберите string
в массив. Вы можете использовать json_decode
функцию для этого.
<?php
$decoded = json_decode($content, true);
var_dump($decoded);
даст
array(3) {
["accountId"]=>
string(36) "6df47486-86d6-4b4b-a5e7-4c6b1b8c9322"
["user"]=>
string(12) "greenz_lewis"
["stats"]=>
array(1) {
["p2"]=>
array(2) {
["score"]=>
array(3) {
["label"]=>
string(5) "Score"
["category"]=>
string(7) "General"
["rank"]=>
int(9074838)
}
["top1"]=>
array(2) {
["label"]=>
string(4) "Wins"
["value"]=>
string(2) "33"
}
}
}
}
Создать элементы таблицы
Далее,давайте создадим элементы таблицы.
<tr>
<td><?= $decoded['stats']['p2']['score']['rank']; ?></td>
<td><?= $decoded['stats']['p2']['top1']['value']; ?></td>
</tr>
даст
<tr>
<td>9074838</td>
<td>33</td>
</tr>
Соберите все
<?php
$content = file_get_contents('foo.json');
if (! $content) {
// File doesn't exists
}
$decoded = json_decode($content, true);
if (! $decoded) {
// Unable to parse JSON
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Player</title>
</head>
<body>
<table>
<tr>
<th>Rank</th>
<th>Value</th>
</tr>
<tr>
<td><?= $decoded['stats']['p2']['score']['rank']; ?></td>
<td><?= $decoded['stats']['p2']['top1']['value']; ?></td>
</tr>
<table>
</body>
</html>
даст
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Player</title>
</head>
<body>
<table>
<tr>
<th>Rank</th>
<th>Value</th>
</tr>
<tr>
<td>9074838</td>
<td>33</td>
</tr>
<table>
</body>
</html>
Я даю вам радость обрабатывать ошибки перенаправления и обработки в случае, если файл не существует или происходит сбой декодирования JSON.
Проблемы
Будьте осторожны с тем, как вы пишете свою таблицу. В таблице, которую вы начали, есть четыре столбца, но вы хотите добавить два значения.
Вы используете Ajax, но вам это не нужно. Работа по извлечению содержимого файла может быть выполнена на стороне сервера.
Опять же, будьте осторожны с тем, как вы структурируете свой файл JSON.