arrays - 使用从流中提取的值创建一个数组
问题描述
我正在尝试使用 jq 来制定 xhr 的请求参数。
请求必须如下所示:
{
"ns:inputArticleItemList": {
"#namespaces": {
"ns": "http://www.unknown.com/ccp/basit/service/article/api"
},
"articles": [
{
"articleID": "000000000002158654",
"insertCode": "62",
"calculatePrice": true,
"checkAvailability": true,
"findExclusions": true
},
{
"articleID": "000000000002147829",
"insertCode": "62",
"calculatePrice": true,
"checkAvailability": true,
"findExclusions": true
},
{
"articleID": "000000000002103650",
"insertCode": "62",
"calculatePrice": true,
"checkAvailability": true,
"findExclusions": true
},
]
}
}
我要使用的 JSON 是这样的:
{
"2201299": {
"title": "this is the product description for article 2201299",
"prop1": "value1",
"prop2": "value2",
"prop3": "value3"
}
}
{
"2240002": {
"title": "this is the product description for article 2240002",
"prop1": "value1",
"prop2": "value2",
"prop3": "value3"
}
}
所以我理想中想要的是正确转换上述内容。我在这里看到两个困难:
- 商品编号是“未知”键
- JSON结果似乎不是一个数组本身?
我能想到的最好的 jq 语法是:
{ "#namespaces": { "ns": "http://www.unknown.com/ccp/basit/service/article/api" } } + (keys[]| { articleId: ., insertCode: "62", calculatePrice: true, checkAvailability: true, findExclusions: true } | { articles: . }) | { "ns:inputArticleItemList": . }
但是,这无法从键中创建一个真正的数组并正确插入根/父元素。
结果如下:
{
"ns:inputArticleItemList": {
"#namespaces": {
"ns": "http://www.unknown.com/ccp/basit/service/article/api"
},
"articles": {
"articleId": "2201299",
"insertCode": "62",
"calculatePrice": true,
"checkAvailability": true,
"findExclusions": true
}
}
}
{
"ns:inputArticleItemList": {
"#namespaces": {
"ns": "http://www.unknown.com/ccp/basit/service/article/api"
},
"articles": {
"articleId": "2240002",
"insertCode": "62",
"calculatePrice": true,
"checkAvailability": true,
"findExclusions": true
}
}
}
这是要摆弄的 jqplay:https ://jqplay.org/s/4rGV-xU05p
解决方案
你正在寻找inputs
.
使用命令行上的-n / --null-input选项,该程序会产生预期的输出。
{
"ns:inputArticleItemList": {
"#namespaces": {
"ns": "http://www.unknown.com/ccp/basit/service/article/api"
},
"articles": [
{
"articleID": (inputs | keys_unsorted[]),
"insertCode": "62",
"calculatePrice": true,
"checkAvailability": true,
"findExclusions": true
}
]
}
}
推荐阅读
- python - 按名称分组然后按日期排序后连接字符串
- google-admin-sdk - 使用 Google Workspace Reports API、管理员日志类型“gcp”收集的日志与直接使用 Cloud Logging API 收集的日志之间的区别?
- reactjs - React Socket.io 存储消息
- javascript - 将 atlaskit markdown 表示法转换为 html 元素
- mdanalysis - 如何使用 atomselect 在 MDAnalysis 的 pdb 文件中指定 atomNumbers/Index 位置?
- webpack - MSBUILD 和 YAML 的区别
- django - 如何在 Django 迁移中将 ManyToMany 字段设置为现有对象?
- python - Python / Numpy:在多维数组的分组列中按行组合布尔掩码
- java - 将 TextView 值链接到 firebase 数据库 ID
- sqlite - 检测房间迁移完成