【发布时间】:2018-02-16 21:45:13
【问题描述】:
我正在尝试使用 SQL Server 2016 中的 JSON 解析将 API 的 JSON 输出转换为 SQL Server 表。但是,我很难让它工作。我已经用尽了我所有的搜索努力。
JSON 输出非常简单。
[{"Jobs":[{"Agricultural":false,"AlternateTitle":null,"DateInJob":"/Date(1454997600000)/","DirectLabor":false,"EffectiveDate":"/Date(-62135575200000)/","EmployeeIdentifier":{"EmployeeNumber":"000001","CompanyCode":"60639"},"EmployeeType":"REG","FullOrPartTime":"F","HourlyOrSalaried":"S","JobCode":"HRCOORD","JobGroup":null,"LocalUnion":null,"NationalUnion":null,"OrgLevel1":null,"OrgLevel2":null,"OrgLevel3":null,"OrgLevel4":null,"PayFrequency":"B","PayGroup":"60639","PayScaleCode":null,"Project":null,"Promotion":false,"ReasonCode":"100","ScheduledHours":80,"Seasonal":false,"SelfServiceProperties":null,"ShiftCode":"Z","ShiftGroup":"Z","StepNo":null,"Supervisor":null,"TimeClock":null,"Transfer":false,"YouthTraining":false}],"CompanyCode":"60639","EmployeeNumber":"000001","FirstName":"George","LastName":"TestEmployee"},{"Jobs":[{"Agricultural":false,"AlternateTitle":"Client Care Representative","DateInJob":"/Date(1497592800000)/","DirectLabor":false,"EffectiveDate":"/Date(-62135575200000)/","EmployeeIdentifier":{"EmployeeNumber":"003613","CompanyCode":"60637"},"EmployeeType":"TES","FullOrPartTime":"F","HourlyOrSalaried":"H","JobCode":"CCREP","JobGroup":null,"LocalUnion":null,"NationalUnion":null,"OrgLevel1":"000","OrgLevel2":"001","OrgLevel3":null,"OrgLevel4":null,"PayFrequency":"B","PayGroup":"60637","PayScaleCode":null,"Project":"STAFF","Promotion":false,"ReasonCode":"Z","ScheduledHours":80,"Seasonal":false,"SelfServiceProperties":null,"ShiftCode":"Z","ShiftGroup":"Z","StepNo":null,"Supervisor":{"EmployeeNumber":"003639","CompanyCode":"60637","ExtensionData":{}},"TimeClock":null,"Transfer":false,"YouthTraining":false}],"CompanyCode":"60637","EmployeeNumber":"003613","FirstName":"George","LastName":"TestEmployee"}]
我已使用此 SQL 代码将 JSON 数据提取到 SQL 中。
Declare @JSON nvarchar(max)
SELECT @JSON = BulkColumn-- Replace(Replace(BulkColumn,'',''),'','')
FROM OPENROWSET (BULK 'C:\JSON\JobService.json', SINGLE_CLOB) as j
Select *
from OPENJSON(@JSON, N'$')
WITH (
LastName nvarchar(100) N'$.LastName'
,FirstName nvarchar(100) N'$.FirstName'
,ScheduledHours INT N'$.Jobs.ScheduledHours')
我遇到的问题是获取更深层的嵌套数据。 LastName 和 FirstName 很好,但我无法在“Jobs”对象或更深的内部得到任何东西,我不知道为什么。任何帮助将不胜感激。
【问题讨论】:
标签: json sql-server tsql sql-server-2016