首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何转义XML字符串并通过jq将其作为值插入到JSON中?

如何转义XML字符串并通过jq将其作为值插入到JSON中?
EN

Stack Overflow用户
提问于 2019-01-09 17:30:37
回答 2查看 537关注 0票数 0

我在一个XML文件中获得了内容,如下所示:

代码语言:javascript
复制
<blah abc="def">123</blah>

和一个JSON字符串,如下所示:

代码语言:javascript
复制
{
  "thj": "abc"
}

我想使用jq将XML合并到JSON中,以获得如下内容

代码语言:javascript
复制
{
  "thj": "abc", 
  "xml": "&lt;blah abc=\"def\"&gt;123&lt;/blah&gt;"
}

(希望我的XML转义是正确的……)

我正在尝试像这样的命令

代码语言:javascript
复制
echo $JSON_STRING | jq --slurpfile XML_CONTENT $XML_FILENAME --raw-input '@html' '.xml = "($XML_CONTENT)"'

代码语言:javascript
复制
echo $JSON_STRING | jq @html '.xml' <<< $XML_FILE_CONTENT

代码语言:javascript
复制
echo $JSON_STRING | jq --raw-input --slurpfile XML_CONTENT $XML_FILENAME '.xml = ($XML_CONTENT[0] | @html)

但我一直收到jq错误

我想我就快有正确的答案了。帮助!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-09 17:46:39

可以使用--arg定义变量;可以使用"$(<...)"读取文件并提供参数。

代码语言:javascript
复制
echo "$JSON_STRING" | jq --arg xml "$(<"$XML_FILENAME")" '.xml=($xml | @html)'

但是,您可能不需要XML转义,如注释中所述;省略XML转义将给您

代码语言:javascript
复制
echo "$JSON_STRING" | jq --arg xml "$(<"$XML_FILENAME")" '.xml=$xml'

编辑:第二个命令中的拼写错误。

票数 1
EN

Stack Overflow用户

发布于 2019-01-09 17:47:07

使用-R将XML内容作为原始文本读取,并将JSON string作为参数提供给jq。

代码语言:javascript
复制
jq -R --argjson jstr "$JSON_STRING" '$jstr + { "xml" : @html }' "$XML_FILENAME"

@html. | @html的缩写。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54106880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档