修复编码错误的JSON数据

时间:2018-10-28 15:49:10

标签: php json

我正在尝试为客户端修复一些数据,而是通过json_encoding已经json_encoded的数据进一步破坏了它,并最终填充了无法使用的字符串的数据库。

一个这样的断字符串看起来像这样

"[{\"datum_von\":\"2012\",\"datum_bis\":\"2012\",\"organisation\":\"A s.r.o., školící středisko pro vrcholný management\",\"hauptfaecher\":\"Top management\"},{\"datum_von\":\"2011\",\"datum_bis\":\"2011\",\"organisation\":\"Goethe Institut\",\"hauptfaecher\":\"Německý jazyk\r\n\"}]"

任何解决此问题的技巧将不胜感激。

2 个答案:

答案 0 :(得分:1)

如果您将json_encoded加倍,为什么不尝试将json_decoding加倍?它对我有用-唯一的问题是我在引用的代码中所做的C&P在结尾处包含\ n \ r,这会破坏json。一旦删除了那两个,它就可以正常工作。

您的json-

"[{\"datum_von\":\"2012\",\"datum_bis\":\"2012\",\"organisation\":\"A s.r.o., školící středisko pro vrcholný management\",\"hauptfaecher\":\"Top management\"},{\"datum_von\":\"2011\",\"datum_bis\":\"2011\",\"organisation\":\"Goethe Institut\",\"hauptfaecher\":\"Německý jazyk\"}]"

另存为“ e.json” ..代替数据库读取。

<?php
$j=file_get_contents("e.json");

print_r(json_decode(json_decode($j)));

?>

给予

ivan@darkstar:~$ php e.php
PHP Fatal error:  sodium_init() in Unknown on line 0
Array
(
    [0] => stdClass Object
        (
            [datum_von] => 2012
            [datum_bis] => 2012
            [organisation] => A s.r.o., školící středisko pro vrcholný management
            [hauptfaecher] => Top management
        )

    [1] => stdClass Object
        (
            [datum_von] => 2011
            [datum_bis] => 2011
            [organisation] => Goethe Institut
            [hauptfaecher] => Německý jazyk
        )

)

读取记录-如果双json_decode不返回布尔值false,则重新编码一次,然后发送回服务器并更新该记录。

答案 1 :(得分:-1)

如果您使用的是php,请使用函数stripslashes() 检查http://php.net/manual/en/function.stripslashes.php以获得有关功能的更多详细信息。

它将从Json对象中删除斜线。