PHP - Как обновить данные JSON в текстовом файле? - PullRequest
4 голосов
/ 11 июня 2011

Вот пример данных JSON, сохраненных в файле data.txt

   [
     {"name":"yekky"},
     {"name":"mussie"},
     {"name":"jessecasicas"}
     ...// many rows
    ]

Я бы хотел обновить файл, чтобы он выглядел так:

[
 {"name":"yekky","num":"1"},
 {"name":"mussie","num":"2"},
 {"name":"jessecasicas","num":"3"}
 ...// many rows
]

Эточто у меня так далеко:

$json_data = file_get_contents('data.txt');
// What goes here?

И как мне посчитать, сколько строк в дереве JSON?

Ответы [ 3 ]

6 голосов
/ 11 июня 2011

Используйте json_decode() для декодирования данных JSON в массиве PHP, манипулируйте массивом PHP, а затем перекодируйте данные с помощью json_encode().

Например:

$json_data = json_decode(file_get_contents('data.txt'), true);
for ($i = 0, $len = count($json_data); $i < $len; ++$i) {
    $json_data[$i]['num'] = (string) ($i + 1);
}
file_put_contents('data.txt', json_encode($json_data));
2 голосов
/ 11 июня 2011
$file = 'data.txt';
$data = json_decode(file_get_contents($file));
foreach ($data as $key => $obj) {
    $obj->num = (string)($key+1);
}
file_put_contents($file, json_encode($data));
2 голосов
/ 11 июня 2011

Для таких задач вы должны использовать PHP JSON-библиотеку . Например, прочитав данные JSON из файла, сделайте что-то вроде:

$json = json_decode($json_data);
$itemCount = count($json);

После изменения данных JSON просто закодируйте их снова:

$json_data = json_encode($json);

Кроме того, вы, похоже, хотите улучшить данные JSON. Я советую просто использовать все, что выходит из json_encode, и сохранить это в своем файле, потому что это, вероятно, будет наименьшее (по размеру файла) возможное представление ваших данных JSON.

Если вы отформатируете его так, чтобы его могли прочитать люди, у вас будет много лишних пробелов / табуляций / разрывов строк, которые увеличивают размер файла и время синтаксического анализа.

Если вам нужно прочитать это самостоятельно, вы все равно можете украсить свои данные JSON вручную .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...