PhpMyAdmin 不会生成正确的 JSON 导出文件吗?用啥替换 Unix 上的 ^M 字符?
Posted
技术标签:
【中文标题】PhpMyAdmin 不会生成正确的 JSON 导出文件吗?用啥替换 Unix 上的 ^M 字符?【英文标题】:Doesn't PhpMyAdmin generate correct JSON export files? With what to replace ^M character on Unix?PhpMyAdmin 不会生成正确的 JSON 导出文件吗?用什么替换 Unix 上的 ^M 字符? 【发布时间】:2014-02-11 12:14:40 【问题描述】:我使用 phpMyAdmin 工具在 JSON 文件中导出了一个 SQL 表。
我有一个这样的文件:
/**
Export to JSON plugin for PHPMyAdmin
@version 0.1
*/
// Database 'table_name'
// ...
["id": 7,"field1": "value1","field2": 2,"field3": "Lorem^M
ipsum^M
dolor^M
sit^M
amet","field4": "value4"]
很明显,第一行(即 cmets 无效,因为 JSON 不允许 cmets)。
我知道^M
是由 DOS/Windows 行尾字符引起的。
删除 cmets 后运行 jsonlint myexportedfile.json
我得到了这个:
[Error: Parse error on line 1:
dolorld2": 2,"field3": "Lorem
-----------------------^
Expecting 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '', '[', got 'undefined']
不过,这是一种有效的 JSON 格式吗?我应该用什么字符替换^M
字符?换行(\\n
),还是?
我希望能够在 NodeJS 中执行 require("./myexportedfile")
并获取数据然后进行一些更改。
【问题讨论】:
【参考方案1】:使用 cmets 删除行后,您可以对文件应用以下 perl 命令:
perl -pi -e 's/\r\n/\n/g'
它就地更改文件 (!) 删除其中的所有 ^M
并从中生成一个真正的 unix 文件。
【讨论】:
我运行perl -pi -e 's/\r\n/\n/g' myexportedfile.json
,但它只是将^M
字符替换为空。 json文件仍然无效... :-(
这与 phpMyAdmin 无关。 ^M
是您的 JSON 数据的值,而将其替换为“无”是您目前唯一可以做的事情。我假设这些数据来自用户点击 RETURN 或将 DOS 文本复制到其中的某个文本框。删除 ^M 并粘贴到 JSONLINT 中给了我一个好的?
我找到了以下解决方法:导出为 csv,将^M
替换为空,转换为 JSON。以上是关于PhpMyAdmin 不会生成正确的 JSON 导出文件吗?用啥替换 Unix 上的 ^M 字符?的主要内容,如果未能解决你的问题,请参考以下文章
phpMyAdmin 不会在数据库中正确显示 Unicode(utf-8)字符,但在网络中正确显示 [重复]
phpmyadmin 不会导入 funstuff.sql.zip 文件
Phpmyadmin 仅接受来自具有多个输入值的 json 数组中的一个条目
为啥在 phpmyadmin 中创建此表会生成 #1064 错误?