我有一个Perl(.pm
)文件,我一直试图将其放入JSON表示中,以便在其中搜索关键字。在
我的脚本的目录是/Devices/bin/script.py
。.pm
文件所在的目录位于上一级,因此/Devices/Devices.PM
。^{5>和包含静态数据的cdies一样:
mylist = (
blah => {
other =9,
houses => 1,
etc => [
{ etc => '5',
ppl => '3,
things => "etc",
animals => [ 'blah-228', 'blah-229' ]
},
{ etc => '9',
ppl => '5',
things => "22",
animals => [ 'blah-2', 'blah-5' ]
},
],
partner => 'ets',
location => 'wherever',
},
blah => {
ppl => 6,
place => 101,
things => 'etc',
animals => 'whatever',
},
我有:
^{pr2}$但我一直得到TypeError: <open file 'SwitchConfig.pm', mode 'w' at 0x10c1f69c0> is not JSON serializable
。我已经尝试了好几种方法,但没有运气,包括json.dump(s)
。我总是犯不同的错误。我是否没有正确理解我的.pm
文件结构,以便将其转换为JSON表示?在
^{} 从Python对象(如} 。但是,这仍然行不通,因为
{"foo": True}
)转换为将该对象表示为JSON的字符串(如'{"foo": true}'
)。您似乎正在尝试另一种方法,将包含JSON的文件转换为Python对象;执行此操作的函数是^{Devices.pm
不包含JSON。您需要编写一个Perl脚本来导入Devices.pm
,然后将其内容转储为实际的JSON,或者用Python编写一个Perl解析器。我推荐第一种方法。在似乎您需要使用Perl脚本(或一个行程序)来阅读本文,然后导出正确的JSON。在
首先,显示的内容不是有效的Perl。我将假设一些基本的语法错误的错误。在
在
mylist
前面还有一个丢失的%
;在Perl中,变量名以sigil开头,%
表示哈希。我会假设这是一个遗漏张贴,但它在那里。如果没有,你就得解决这个问题。在然后让我使用一个文件
data.pm
,例如这是一个简短的已发布数据示例,其中修复了一些拼写错误。在
下面是一个Perl脚本,可以从中生成JSON。它使用do将文件作为脚本执行,从而将数据结构(哈希)读入程序。然后JSON::PP 模块用于从中生成
^{pr2}$JSON
,因为它应该安装在使用Perl的系统上。在整个工作是在前两行完成的。
JSON::PP
是一个核心模块(since v5.14),但如果外部依赖不是问题,请使用JSON,如果安装了fastJSON::XS
,则使用它。在这很好地符合一个班轮
其中输出被重定向到文件。在
程序和一行程序输出(为了可读性而换行)
写入的文件
data.json
的内容是什么。在为此,
.pm
文件必须只包含一个有效的Perl数据结构。如果变量多于一个散列值,这将不起作用,因为do
不会返回所有这些数据。那你就得用其他方法处理文件了。在相关问题 更多 >
编程相关推荐