从 SQL Table 转换为 Json

Convert Json from SQL Table

我正在使用 SQL Server 2016。我想 return 给定格式的 Json

Select 声明

SELECT Country,[Arm Export],[Food Export] FROM Table

预期Json格式

[
  {
    "India":{
             "Arm Export": 30,
             "Food Export": 50
            }
  },
  {
   "USA":{
          "Arm Export": 90,
          "Food Export": 5
         }
  },
  {
   "Russia":{
             "Arm Export": 90,
             "Food Export": 5
            }
  }
]

任何帮助将不胜感激....

试试这个...

SELECT'['+stuff(
                (SELECT ',{"'+Country+'":{"Arm Export": '+convert(varchar,[Arm Export])+',"Food Export": '+convert(varchar,[Food Export])+'}}'
                   FROM TABLE
                   FOR XML Path('')),1,1,'')+']'[Detail]

输出将是...

[
  {
    "India":{
             "Arm Export": 30,
             "Food Export": 50
            }
  },
  {
   "USA":{
          "Arm Export": 90,
          "Food Export": 5
         }
  },
  {
   "Russia":{
             "Arm Export": 90,
             "Food Export": 5
            }
  }
]

如果您希望输出与问题中定义的完全一致,那么 Nithin 的答案可能是最好的。

如果输出可能略有不同,您可以尝试 FOR JSON PATH,像这样:

SELECT Country, 
  [Arm Export] AS 'Export.Arm Export',
  [Food Export] AS 'Export.Food Export'
  FROM dbo.tb_CountryExport
  FOR JSON PATH;

这会给你这样的输出:

[
  {
    "Country": "Russia",
    "Export": {
      "Arm Export": 90,
      "Food Export": 5
    }
  },
  {
    "Country": "India",
    "Export": {
      "Arm Export": 30,
      "Food Export": 50
    }
  },
  {
    "Country": "USA",
    "Export": {
      "Arm Export": 90,
      "Food Export": 5
    }
  }
]

但正如我所说,输出可能不是您想要的。

尼尔斯