You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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)
  • 解析完成后,可通过展开活动将嵌套对象的字段拆分为独立列,或者直接引用解析后的对象属性(例如Properties.Value4.RoleID)。

内容的提问来源于stack exchange,提问作者Robert

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 11:22:34