Perl JSON如何在解码给定JSON文件时处理密钥覆盖
我想解码一个给定的json文件,其结构如下。我的问题是,当我把它解码成perl时,我发现它与片有密钥冲突。有没有办法从json解码中获得一个不会覆盖冗余元素的哈希结构?我可以想到阵列,欢迎任何想法和建议Perl JSON如何在解码给定JSON文件时处理密钥覆盖,json,perl,Json,Perl,我想解码一个给定的json文件,其结构如下。我的问题是,当我把它解码成perl时,我发现它与片有密钥冲突。有没有办法从json解码中获得一个不会覆盖冗余元素的哈希结构?我可以想到阵列,欢迎任何想法和建议 "register": { "name" : "CTRL", "desc" : "Control Register 1", "mode" : "rw", "reset_value": "0x0000_0000",
"register": {
"name" : "CTRL",
"desc" : "Control Register 1",
"mode" : "rw",
"reset_value": "0x0000_0000",
"addr_offset": "+0x4",
"slice": {
"name": "Reserved",
"msb" : 3,
"lsb" : 2,
"desc": "Reserved. Leave 0."
},
"slice": {
"name": "en",
"msb" : 1,
"lsb" : 1,
"desc": "Port enable"
},
"slice": {
"name": "Lbm",
"msb" : 0,
"lsb" : 0,
"desc": "Loop back mode"
}
},
根据
对象中的名称应该是唯一的
所以“正确”的答案是-不要使用重复的键来执行JSON,使用数组
{
"register": {
"name": "CTRL",
"desc": "Control Register 1",
"mode": "rw",
"reset_value": "0x0000_0000",
"addr_offset": "+0x4",
"slices": [
{
"name": "Reserved",
"msb": 3,
"lsb": 2,
"desc": "Reserved. Leave 0."
},
{
"name": "en",
"msb": 1,
"lsb": 1,
"desc": "Port enable"
},
{
"name": "Lbm",
"msb": 0,
"lsb": 0,
"desc": "Loop back mode"
}
]
}
}
然后用perl进行解码:
my $stuff = decode_json(
do { local $/; <$input> }
);
print Dumper $stuff;
但是,如果您确实必须这样做,您可能能够根据
对象中的名称应该是唯一的
所以“正确”的答案是-不要使用重复的键来执行JSON,使用数组
{
"register": {
"name": "CTRL",
"desc": "Control Register 1",
"mode": "rw",
"reset_value": "0x0000_0000",
"addr_offset": "+0x4",
"slices": [
{
"name": "Reserved",
"msb": 3,
"lsb": 2,
"desc": "Reserved. Leave 0."
},
{
"name": "en",
"msb": 1,
"lsb": 1,
"desc": "Port enable"
},
{
"name": "Lbm",
"msb": 0,
"lsb": 0,
"desc": "Loop back mode"
}
]
}
}
然后用perl进行解码:
my $stuff = decode_json(
do { local $/; <$input> }
);
print Dumper $stuff;
但是,如果您确实必须这样做,您可能能够使用
JSON
,不清楚如何将对象解码为perl?你能详细说明一下吗?你的问题是这不是正确的JSON。钥匙必须是唯一的。您需要一个匿名哈希数组,而不是复制密钥。不清楚如何将对象解码为perl?你能详细说明一下吗?你的问题是这不是正确的JSON。钥匙必须是唯一的。您需要一个匿名哈希数组,而不是复制密钥