如何处理需要反透视的 JSON 数据?
Posted
技术标签:
【中文标题】如何处理需要反透视的 JSON 数据?【英文标题】:How process JSON data that needs to be unpivoted? 【发布时间】:2019-06-10 22:55:34 【问题描述】:我有一个 JSON 源,它有一个奇怪的布局,其中有未知数量的列。
https://theunitedstates.io/congress-legislators/committee-membership-current.json
格式如下:
ColumnHeaders => HLAG HSAG HSAG01 .... to unknown
Single row of Data JSON JSON JSON
我怎样才能得到这样的数据:
Col1 Col2
HLAG JSON
HSAG JSON
HSAG01 JSON
我目前在 SSIS 工作,因此我可以使用 C# 解决方案。
我只是不知道如何处理 SSIS 中的未知列。
感谢您的帮助。
【问题讨论】:
是否可以修改您的源连接以使用查询在数据进入时对其进行透视? 你用的是什么版本的sql server? SQL SERVER 2012 【参考方案1】:如果您找不到更方便的解决方案,可以使用命令行工具jq:
jq -jrc 'keys_unsorted[] as $key | $key,"\t",.[$key],"\n" ' committee-membership-current.json
根据问题描述,每个“列标题”生成一行,使用文字制表符(“\t”)作为分隔符。可以以明显的方式指定不同的分隔符。
【讨论】:
感谢您的帮助。仅仅理解您的答案的作用需要额外的努力吗?【参考方案2】:网上有很多文章描述了解析复杂Json的过程,主要思路是使用带有System.Web.Extensions
汇编的脚本组件。我认为以下文章是您正在寻找的:
其他有用的文章:
Approaches to Import JSON in SSIS (SQL Server 2016+) Part 1 Importing JSON Files Using SQL Server Integration Services【讨论】:
我远远超出了以下链接中的标准,这些链接演示了创建用于反序列化的类。我的问题是 JSON 返回了一个包含无限列的数据集,所有列都包含一行数据。我需要在处理之前将其分解为行,并且很幸运,我发现我公司购买的工具仅允许将其作为 GUI 的属性。以上是关于如何处理需要反透视的 JSON 数据?的主要内容,如果未能解决你的问题,请参考以下文章
spring boot中各种数据不匹配如何处理jackson反序列化错误