我使用
Ruby脚本与应用程序API进行接口,返回的结果是JSON格式的.例如:
{ "incidents": [ { "number": 1,"status": "open","key": "abc123" } { "number": 2,"key": "xyz098" } { "number": 3,"status": "closed","key": "lmn456" } ] }
我正在寻找一个特定的“键”值(在本示例中为yzx098)的每个块,并返回相关的“数字”值.
现在,我对Ruby很新,我不知道是否已经有一个功能来帮助实现这一点.然而,几天的Google Googles和Ruby资源书籍的研究并没有产生任何有用的东西.
有什么建议么?
解决方法
首先,JSON应该如下:(注意逗号)
{ "incidents": [ { "number": 1,"key": "abc123" },{ "number": 2,"key": "xyz098" },{ "number": 3,"key": "lmn456" } ] }
将上面的json放在一个变量中
s = '{"incidents": [{"number": 1,"key": "abc123"},{"number": 2,"key": "xyz098"},{"number": 3,"key": "lmn456"}]}'
解析JSON
h = JSON.parse(s)
使用地图查找所需数量
h["incidents"].map {|h1| h1['number'] if h1['key']=='xyz098'}.compact.first
或者您也可以使用下面的查找
h["incidents"].find {|h1| h1['key']=='xyz098'}['number']
或者您也可以使用select如下
h["incidents"].select {|h1| h1['key']=='xyz098'}.first['number']