如何在Azure Data Factory中提取JSON对象及修复格式问题
JSON格式合法性与ADF提取方案
1. 格式合法性判断
你提供的JSON存在两处问题:
- 语法错误:
"Country":"UnitedStates",]这一行多了一个多余的],会导致整个JSON无法被正常解析; Value4和Text1的内容是转义后的JSON字符串,这种写法本身符合JSON语法规范,但会被ADF识别为普通字符串,而非嵌套对象或数组。
2. 修复与提取方法
方案一:修正原始JSON(优先推荐)
直接调整Value4和Text1的结构,去掉外层引号和内部的转义符\,同时删除那个多余的],修正后的完整JSON如下:
{ "RoleInstance": "HIDDEN", "City": "Boston", "Country": "UnitedStates", "ClientIP": "0.0.0.0", "ClientStateOrProvince": "MA", "Properties": { "Value1": "Test", "Value2": "12345", "Value3": "User", "Value4": { "HostSpecType": "User", "ListSpecType": "User", "RoleID": "156", "OwnerIDs": [159], "OwnerID": 3, "ColumnsToLoad": ["UsrID","SpecID","SpecName","SpecTyp","SpecOpt","ParentSpecID","ParentSpecTyp","InternalVersion","Email","Office","DispName","FirstName","LastName","Phone","OfcID","UserPrin","EmplID"] }, "UserID": "498", "MachineName": "QG6T", "Text1": { "ID": "1596", "Name": "LaunchSchedule", "Type": "Initializa Mailbox Monitor", "AppID": "1002" }, "TaskID": "16415", "JobID": "167" }, "ResourceGUID": "c94e4", "SDKVersion": "dotnet:2-21496" }
修正后ADF会自动识别Value4和Text1为嵌套对象,可直接进行字段提取或展开操作。
方案二:ADF内解析字符串化JSON(无法修改原始JSON时)
如果不能修改原始JSON文件,先手动或通过ADF的数据流修正语法错误(删除多余的]),再按以下步骤处理:
- 添加派生列活动,使用
json()函数将字符串转换为JSON对象:- 解析Value4:
json(Properties.Value4) - 解析Text1:
json(Properties.Text1)
- 解析Value4:
- 解析完成后,可通过展开活动将嵌套对象的字段拆分为独立列,或者直接引用解析后的对象属性(例如
Properties.Value4.RoleID)。
内容的提问来源于stack exchange,提问作者Robert
相关产品推荐
相关产品推荐

