建立
我试图弄清楚jq过滤器是如何工作的,并且难以找出嵌套数组.使用下面的数据我无法做出平坦的5键输出.我可以得到1个键和4个空值或4个键和1个空值,但不是所有5个键.
1个键,4个空值:
.Reservations[] | {OwnerId, InstanceId, ImageId, PrivateIpAddress, Platform}
Run Code Online (Sandbox Code Playgroud)
返回:
{
"OwnerId": "000000000000",
"InstanceId": null,
"ImageId": null,
"PrivateIpAddress": null,
"Platform": null
}
Run Code Online (Sandbox Code Playgroud)
4个键,1个空:
.Reservations[].Instances[] | {OwnerId, InstanceId, ImageId, PrivateIpAddress, Platform}
{
"OwnerId": null,
"InstanceId": "i-v33333333",
"ImageId": "ami-44444444",
"PrivateIpAddress": "10.0.0.0",
"Platform": "windows"
}
Run Code Online (Sandbox Code Playgroud)
由于各种原因,我不能在AWS CLI中使用"--query"选项,它确实返回我正在寻找的格式:
aws ec2 describe-instances --region us-east-1 --profile temp --query 'Reservations[*].{InstanceId:Instances[0].InstanceId,IP:Instances[0].PrivateIpAddress,Platform:Instances[0].Platform,OwnerId:OwnerId}'
Run Code Online (Sandbox Code Playgroud)
输出:
[
{
"InstanceId": "i-11111111",
"IP": "10.9.9.3",
"OwnerId": "111111111111",
"Platform": windows
},
{
"InstanceId": "i-22222222",
"IP": "10.0.0.0",
"OwnerId": "111111111111",
"Platform": windows
}
]
Run Code Online (Sandbox Code Playgroud)
这是JSON输入:
{
"Reservations": …Run Code Online (Sandbox Code Playgroud) 我试图找出如何使用jq从某些JSON中删除数组元素.以下是输入和所需输出.
jq .Array[0]
Run Code Online (Sandbox Code Playgroud)
输出我想要的数组元素.
{
"blah1": [
"key1:val1"
],
"foobar0": "barfoo0",
"foobar1": "barfoo1"
}
Run Code Online (Sandbox Code Playgroud)
但是我如何重新包装:
{
"blah0": "zeroblah",
"Array": [
Run Code Online (Sandbox Code Playgroud)
和
]
}
Run Code Online (Sandbox Code Playgroud)
输入:
{
"blah0": "zeroblah",
"Array": [
{
"blah1": [
"key1:val1"
],
"foobar0": "barfoo0",
"foobar1": "barfoo1"
},
{
"blah2": [
"key2:val2"
],
"foobar2": "barfoo2",
"foobar3": "barfoo3"
}
]
}
Run Code Online (Sandbox Code Playgroud)
期望的输出:
{
"blah0": "zeroblah",
"Array": [
{
"blah1": [
"key1:val1"
],
"foobar0": "barfoo0",
"foobar1": "barfoo1"
}
]
}
Run Code Online (Sandbox Code Playgroud) 我有一个带有 Devise 的 Rail 4 应用程序。我正在尝试配置 OmniAuth 以使用我们公司的 Ping OpenID Connect IdP。看来我必须在机架中间件中编写一个 OmniAuth 策略。
我拿了'omniauth-digitalocean' gem(有他们的策略)并小心地用另一个名字替换了'digitalocean'的所有引用。我小心地尊重所有情况以符合惯例。
我现在遇到的问题是我似乎有一个私人宝石。我将它添加到我的 Gemfile 中:
gem 'omniauth-private', :path => "/var/lib/gems/2.0.0/gems/omniauth-private-0.1.0"
Run Code Online (Sandbox Code Playgroud)
运行“捆绑安装”时没有出现错误。
我在使用 'rake db:migrate' 时收到此错误:
fatal: Not a git repository (or any of the parent directories): .git
Run Code Online (Sandbox Code Playgroud)
我相信这是由我的自定义 gem 中的 .gitignore 文件引起的。我删除了 .gitignore 文件,现在我得到了:
Devise::OmniAuth::StrategyNotFound: Could not find a strategy with name `Private'. Please ensure it is required or explicitly set it using the :strategy_class option.
Run Code Online (Sandbox Code Playgroud)
这与我在确定需要编写 n Omniuth 策略之前收到的错误消息相同,所以我认为这意味着我的 gem 没有被识别。
所以我不确定到底发生了什么。我想我正在为这个私人宝石而苦苦挣扎。但这也可能是 OmniAuth 问题。
任何人都曾获得过使用 …