我需要从一个JSON字符串中打印键和值。我已经解析了一个简单的JSON字符串。
我的代码是这样的。
但是这段代码并不适用于像这样的json字符串。
我需要这样打印。
使用grep命令可以获取这样的数据吗?
{
"Name": "test1",
"CreateDate": "2016-08-30T10:52:52Z",
"Id": "testId1",
}
我的代码是这样的。
q1=$(echo $x | grep -Po '"Name":.*?[^\\]",'| perl -pe 's/"Name": //; s/^"//; s/",$//');
q2=$(echo $x | grep -Po '"Id":.*?[^\\]",'| perl -pe 's/"Id": //; s/^"//; s/",$//');
echo $q1 "," $q2;
但是这段代码并不适用于像这样的json字符串。
x='{ "TestNames":
[{
"Name": "test1",
"CreateDate": "2016-08-30T10:52:52Z",
"Id": "testId1"
},
{
"Name": "test2",
"CreateDate": "2016-08-30T10:52:13Z",
"Id": "testId2"
}]
}';
我需要这样打印。
test1 , testId1
test2 , testId2
使用grep命令可以获取这样的数据吗?
grep
解决方案无法处理JSON字符串中的\n
序列、\t
或\"
,而确保您的代码在内容更改时立即崩溃会使整个解决方案变得不必要地脆弱。我曾经有客户构建了非常脆弱的代码,甚至无法处理JSON字典中不同的键顺序——一旦我们升级了序列化库(更不用说扩展API),这意味着这些客户已经自毁了。引导人们走上这条路是非常不明智的。 - Charles Duffy