我在一个XML文件中获得了内容,如下所示:
<blah abc="def">123</blah>和一个JSON字符串,如下所示:
{
"thj": "abc"
}我想使用jq将XML合并到JSON中,以获得如下内容
{
"thj": "abc",
"xml": "<blah abc=\"def\">123</blah>"
}(希望我的XML转义是正确的……)
我正在尝试像这样的命令
echo $JSON_STRING | jq --slurpfile XML_CONTENT $XML_FILENAME --raw-input '@html' '.xml = "($XML_CONTENT)"'和
echo $JSON_STRING | jq @html '.xml' <<< $XML_FILE_CONTENT和
echo $JSON_STRING | jq --raw-input --slurpfile XML_CONTENT $XML_FILENAME '.xml = ($XML_CONTENT[0] | @html)但我一直收到jq错误
我想我就快有正确的答案了。帮助!
发布于 2019-01-09 17:46:39
可以使用--arg定义变量;可以使用"$(<...)"读取文件并提供参数。
echo "$JSON_STRING" | jq --arg xml "$(<"$XML_FILENAME")" '.xml=($xml | @html)'但是,您可能不需要XML转义,如注释中所述;省略XML转义将给您
echo "$JSON_STRING" | jq --arg xml "$(<"$XML_FILENAME")" '.xml=$xml'编辑:第二个命令中的拼写错误。
发布于 2019-01-09 17:47:07
使用-R将XML内容作为原始文本读取,并将JSON string作为参数提供给jq。
jq -R --argjson jstr "$JSON_STRING" '$jstr + { "xml" : @html }' "$XML_FILENAME"@html是. | @html的缩写。
https://stackoverflow.com/questions/54106880
复制相似问题