Json jq拆分字符串和映射

Json jq拆分字符串和映射,json,jq,Json,Jq,我得到了下面的字符串,我想将其转换为json数组 2 email1@myDomain.com 1 email2@myDomain.com 3 email3@myDomain.com 这是jq命令: jq --slurp --raw-input 'split("\n")[:-1] | map({email: ., free: 0, used: 0})' 输出: [ { "email": " 2 email1@m

我得到了下面的字符串,我想将其转换为json数组

   2 email1@myDomain.com
   1 email2@myDomain.com
   3 email3@myDomain.com
这是jq命令:

jq --slurp --raw-input 'split("\n")[:-1] | map({email: ., free: 0, used: 0})'
输出:

[
  {
    "email": "   2 email1@myDomain.com",
    "free": 0,
    "used": 0
  },
  {
    "email": "   1 email2@myDomain.com",
    "free": 0,
    "used": 0
  },
  {
    "email": "   3 email3@myDomain.com",
    "free": 0,
    "used": 0
  }
]
期望输出:

[
  {
    "email": "email1@myDomain.com",
    "free": 2,
    "used": 0
  },
  {
    "email": "email2@myDomain.com",
    "free": 1,
    "used": 0
  },
  {
    "email": "email3@myDomain.com",
    "free": 3,
    "used": 0
  }
]
有人能帮忙吗?我需要在空白处拆分字符串,我知道这是可能的,但我不知道确切的语法。

我找到了答案

jq --slurp --raw-input 'split("\n")[:-1] | map({email: split(" ")[1], free: split(" ")[0], used: 0})'
我想出来了

jq --slurp --raw-input 'split("\n")[:-1] | map({email: split(" ")[1], free: split(" ")[0], used: 0})'

在可能的情况下,避免“咕噜咕噜”几乎总是更好的,而且在空间上拆分一次会更有效:

jq -R '
  [splits(" +")]
  | {email: .[1],
     free:  (.[0] | tonumber),
     used: 0 }
' input.txt

在可能的情况下,避免“咕噜咕噜”几乎总是更好的,而且在空间上拆分一次会更有效:

jq -R '
  [splits(" +")]
  | {email: .[1],
     free:  (.[0] | tonumber),
     used: 0 }
' input.txt