我的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错误
我认为我已经接近正确的答案了……帮助!
答案 0 :(得分:1)
您可以使用--arg
来定义变量;您可以使用"$(<...)"
来读取文件并提供参数。
echo "$JSON_STRING" | jq --arg xml "$(<"$XML_FILENAME")" '.xml=($xml | @html)'
但是,您可能不需要注释中提到的XML转义。遗漏那给你
echo "$JSON_STRING" | jq --arg xml "$(<"$XML_FILENAME")" '.xml=$xml'
编辑:在第二个命令中键入。
答案 1 :(得分:1)
使用-R
读取XML内容作为原始文本,并提供JSON字符串作为jq的参数。
jq -R --argjson jstr "$JSON_STRING" '$jstr + { "xml" : @html }' "$XML_FILENAME"
@html
是. | @html
的简写。