c# - 如何确保返回是一个数组?
问题描述
我正在使用 COALESCE 运算符来确保返回一致的数据集。
查询如下所示
SELECT c.id, c.ItemLevel, c.ItemNo, bv.variantId, bv.variantDescription, c.DetailedData.locales[0].images ?? c.BasicData.asset.assets[0].locations[1].path AS images, c.PriceData.WhitePrice, c.PriceData.RedPrice, c.PriceData.DiscountPercentage, c.PriceData.TypeOfDiscount
FROM c
JOIN bv IN c.BasicData.base.sales.variants
WHERE c.brand = 'XXX'
AND c.Consumer = 'YYY'
AND bv.variantId = 'TTT'
AND c.Season = 'XXX'
我的挑战是这c.DetailedData.locales[0].images
是一个数组,但c.BasicData.asset.assets[0].locations[1].path
不是。
我需要c.BasicData.asset.assets[0].locations[1].path
成为一个数组,以便返回的 JSON 是一致的,这样我就可以直接在我的移动应用程序中循环该数组。
如何才能做到这一点?
解决方案
我可能会得到你的分数。
例如,您有以下 2 个示例文档:
[
{
"DetailedData": {
"locales": [
{
"images": [
{
"image": "pic1"
},
{
"image": "pic2"
}
]
}
]
}
},
{
"DetailedData": {},
"BasicData": {
"asset": {
"assets": [
{
"locations": [
{
"path": "AAA"
},
{
"path": "BBB"
}
]
}
]
}
}
}
]
如果你执行你的 sql,你会得到不同的格式:
SELECT c.DetailedData.locales[0].images ?? c.BasicData.asset.assets[0].locations[1].path AS images
FROM c
您可以添加[]
以重置列,例如:
SELECT c.DetailedData.locales[0].images ?? [{"image": c.BasicData.asset.assets[0].locations[1].path}] AS images
FROM c
输出:
推荐阅读
- mysql - GROUP_CONCAT 以多对多关系返回对象数组
- c++ - 给定一个大小为“n”的数组,在每个大小为“k”的窗口中找到最大元素并将它们全部相加,然后打印总和作为输出
- python - 将嵌套的 Python 字典写入 SQL 表
- android - exoplayer setPlayWhenReady() 为什么不工作?
- python-3.x - TF1 训练中使用的 Numpy 数组——Keras 在 TF2 中的准确率要低得多
- material-components-web - (material-components-web) 如何更改 google material 主题的背景颜色?
- javascript - Nodejs docx-merger 模块无法正常工作
- node.js - 使用 import abc = require('node-module') 时出现意外标识符
- javascript - 将数字传递给新生成的数组时无法设置未定义的属性
- php - PHP多个字符串替换排除大括号内的字符串