【发布时间】:2014-08-25 05:26:18
【问题描述】:
我有一个如下的 JSON 文件。
{
"card":{
"cardName":"10AN10G",
"portSignalRates":[
"10AN10G-1-OTU2",
"10AN10G-1-OTU2E",
"10AN10G-1-TENGIGE",
"10AN10G-1-STM64"
],
"listOfPort":{
"10AN10G-1-OTU2":{
"portAid":"10AN10G-1-OTU2",
"signalType":"OTU2",
"tabNames":[
"PortDetails"
],
"requestType":{
"PortDetails":"PTP"
},
"paramDetailsMap":{
"PortDetails":[
{
"type":"dijit.form.TextBox",
"name":"signalType",
"title":"Signal Rate",
"id":"",
"options":[
],
"label":"",
"value":"OTU2",
"checked":"",
"enabled":"false",
"selected":""
},
{
"type":"dijit.form.TextBox",
"name":"userLabel",
"title":"Description",
"id":"",
"options":[
],
"label":"",
"value":"",
"checked":"",
"enabled":"true",
"selected":""
},
{
"type":"dijit.form.Select",
"name":"Frequency",
"title":"Transmit Frequency"
}
]
}
}
}
}
}
我要求输出是:
signalType:"Signal Rate",
userLabel:"Description",
Frequency:"Transmit Frequency",.. ,.....
我试过了:
grep -oP '(?<=\"title\":\")[^"]*' file > outfile
但这只是拆分标题的值并返回。
我可以使用 perl 来访问我想要的 JSON 数据的元素吗?
【问题讨论】:
-
JSON::Parse 是不可能的吗?
-
我不认为这是问题所在,但为了让您知道,您发布的 JSON 无效。
-
jq是一个漂亮的命令行过滤器,用于 sed/awk 排序的 json。 stedolan.github.io/jq -
我编辑了帖子以使 JSON “有效”。我使用在线服务和
jq、json_verify来检查工作。我的想法是像这样的基本问题可能有助于回答(甚至重复),但它需要适当的数据才能有用。如果它是另一个 SO 帖子 (e.g. see this one on JSON and perl) 的副本,我不会感到惊讶。但我认为没关系:-)
标签: json perl data-structures