在bash中将无效的json转换为有效的json
我从脚本中获取了无效的JSON,例如在bash中将无效的json转换为有效的json,json,bash,jq,Json,Bash,Jq,我从脚本中获取了无效的JSON,例如 { name: "Leo", active: true } 如果jq不支持,有没有一个bash安装工具可以用来引导输出并将其转换为有效的JSON,这样jq就可以对其进行处理 这个问题类似于,只是我需要一个命令行实用程序,而不是一些基于替换的php代码。这类事情做得非常好 $ hjson -j <<EOF > { > name: "Leo", > active: true > } > EOF {
{
name: "Leo",
active: true
}
如果jq不支持,有没有一个bash安装工具可以用来引导输出并将其转换为有效的JSON,这样jq就可以对其进行处理
这个问题类似于,只是我需要一个命令行实用程序,而不是一些基于替换的php代码。这类事情做得非常好
$ hjson -j <<EOF
> {
> name: "Leo",
> active: true
> }
> EOF
{
"name": "Leo",
"active": true
}
$hjson-j名字:“狮子座”,
>主动:正确
> }
>EOF
{
“姓名”:“狮子座”,
“活动”:真
}
由于我不知道部署Hjson有多容易(根据Steve Bennett的回答),这里有一个更轻量级的替代方案,使用sed
:
$ sed 's/\b\([^:"]*\)\b\s*:/"\1":/g' <<EOF
> {
> name: "Leo",
> active: true
> }
> EOF
{
"name": "Leo",
"active": true
}
$sed's/\b\([^:“]*\)\b\s*:/“\1”:/g'name:“Leo”,
>主动:正确
> }
>EOF
{
“姓名”:“狮子座”,
“活动”:真
}
请注意,这对于您在问题中提供的示例更为具体:它只会修复键周围缺少的引号。此外,这可能过于激进,例如,整数键也会被引用。jq常见问题解答列出了几种工具(包括hjson)用于将近JSON转换为JSON。其中一些可以用作bash命令,例如。
,它的用途特别广泛
顺便说一句,由于jq允许以灵活的方式在jq程序中指定JSON(例如,可以省略键名周围的引号,并添加“#”注释),您可以使用jq本身将许多不完全JSON的实例转换为JSON。使用您的示例,如果不完全JSON文本位于名为input.nqj的文件中,则调用:
$ jq -n -f input.nqj
将产生:
{
"name": "Leo",
"active": true
}
你更快了:)我有sed的/([:alpha:][]*):/“\1:/”正是我想要的。我将使用python版本
pip3安装hjson&&cli53列表| python-m hjson.tool-j
谢谢!!!