如何在PHP中编辑文件的JSON?

时间:2015-03-01 03:47:50

标签: php arrays json file object

我环顾四周,找到了file_get_contentsfile_put_contents这两个函数,并试图制作一个基本代码,将我的代码中Name的{​​{1}}更改为&#39 ;测试Face',但它完全覆盖了JSON。

这是我在PHP代码之前的JSON:

[0]['Face']

应该改为

[{"Hat":{"Name":"Stylin' Shades","Id":"221177193"},{"Gear":{"Name":"Red Sparkle Time Claymore", "Id":"221181437"}}, {"Face":{"Name":"Joyful Smile", "Id":"209995366"}]

但相反,整个JSON将替换为[{"Hat":{"Name":"Stylin' Shades","Id":"221177193"},{"Gear":{"Name":"Red Sparkle Time Claymore", "Id":"221181437"}}, {"Face":{"Name":"Testing Face", "Id":"209995366"}]

我的PHP:

[{"Face":{"Name":"No"}}]

谢谢!

2 个答案:

答案 0 :(得分:3)

您的JSON有语法错误。特别是:

...,{"Gear":{"Name":"Red Sparkle Time Claymore", "Id":"221181437"}}, {"...

你必须删除第一对括起"Gear"的花括号。最后一个{没有}朋友。

修正了JSON:

[{"Hat":{"Name":"Stylin' Shades","Id":"221177193"},"Gear":{"Name":"Red Sparkle Time Claymore", "Id":"221181437"}, "Face":{"Name":"Joyful Smile", "Id":"209995366"}}]

接下来,您需要使用json_decode的第二个参数将返回的对象转换为关联数组:

$data = json_decode($jsonString, true);

了解更多here。 (参见$assoc论证。)

答案 1 :(得分:1)

将第二个参数添加到json_deconde为true(当为TRUE时,返回的对象将转换为关联数组。)

阅读更多内容:

  

http://php.net/manual/en/function.json-decode.php

<?php
$file = 'notifier.json';
$jsonString = file_get_contents($file);
$data = json_decode($jsonString, true);

$data[0]['Face']['Name'] = 'Testing Face';

$newJSON = json_encode($data);
file_put_contents($file, $newJSON);
?>