PHP - 如何更新txt文件中的JSON数据?

PHP - 如何更新txt文件中的JSON数据?

问题描述:

这里是保存在文件中的JSON数据例如data.txtPHP - 如何更新txt文件中的JSON数据?

[ 
    {"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树中有多少行?

+2

在已经回答[PHP-JSON-解码-A-TXT的文件(http://*.com/questions/6312726/php-json-decode-a-txt-file)和http: //*.com/questions/6311813/php-how-to-write-data-into-json – 2011-06-11 00:38:07

+0

@jcinacio,我现在正在研究json。所以第一个问题是如何写,现在是如何更新。对你来说很容易,但对一个学生来说并不容易。 – 2011-06-11 00:44:43

+0

在php中有精确的** 2 ** json函数 - json_encode和json_decode。我建议你阅读PHP [手册](http://www.php.net/manual/en/) – 2011-06-11 00:46:57

使用json_decode()解码PHP数组中的JSON数据,操作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)); 
+1

'$ json_data [$ i]'实际上是一个对象,而不是一个数组。你的代码不会工作。 – Benjamin 2011-06-11 00:42:46

+0

@Benjamin Morel,仔细检查文档。 – rid 2011-06-11 00:43:20

+0

@Radu,运行你的代码:'致命错误:不能使用stdClass类型的对象作为数组'。他的JSON是一组对象。 – Benjamin 2011-06-11 00:46:10

您应该使用PHP JSON library此类任务。例如,已经从文件中读取您的JSON数据后,做这样的事情:

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

具有修饰你的JSON数据后,只需再次对其进行编码:

$json_data = json_encode($json); 

而且,你似乎想确认你的JSON数据。我的建议是只使用出自json_encode的任何内容并将其保存到您的文件中,因为它可能是JSON数据的最小(文件大小)可能表示。

如果您以人类可读的方式对其进行格式化,则会有很多额外的空格/制表符/换行符,这些增加了文件大小和解析时间。

如果你需要自己阅读,你仍然可以beautify your JSON data by hand

$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));