基于jq模式将属性从一个JSON文件添加到另一个JSON文件

时间:2018-02-12 21:09:14

标签: json merge jq

我是jq初学者,我想知道是否可以根据给定的模式将一个数组从一个json文件添加到另一个json文件。我知道使用sed或grep是可以实现的,但是我觉得不使用jq因为它设计用于json而感到羞耻。

所以这是我的情景。

我有file_1.json:

[
  [
{
  "org": "Architecture Frameworks",
  "physical_endpoint": "http://localhostdayofweek/DayOfWeek",
  "physical_service": "DayOfWeekServiceMT1001",
  "virtual_endpoint": "https://sandbox-laird-dv.crawl.com:443/testpromotion/DayOfWeekServiceMT1001_vs0",
  "virtual_service": "DayOfWeekServiceMT1001_vs0"
},
{
  "org": "Architecture Frameworks",
  "physical_endpoint": "http://localhostdayofweek/DayOfWeek/updated",
  "physical_service": "DayOfWeekServiceMT1002",
  "virtual_endpoint": "https://sandbox-laird-dv.crawl.com:443/UPDATE/DayOfWeekServiceMT1002_vs0_2",
  "virtual_service": "DayOfWeekServiceMT1002_vs0"
},
{
  "org": "Architecture Frameworks",
  "physical_endpoint": "http://localhostdayofweek/DayOfWeek",
  "physical_service": "DayOfWeekServiceMT1004",
  "virtual_endpoint": "https://sandbox-laird-dv.crawl.com:443/test/DayOfWeekServiceMT1004_vs0",
  "virtual_service": "DayOfWeekServiceMT1004_vs0"
},
{
  "org": "Architecture Frameworks",
  "physical_endpoint": "http://localhostdayofweek/DayOfWeek",
  "physical_service": "DayOfWeekServiceMT1005",
  "virtual_endpoint": "https://sandbox-laird-dv.crawl.com:443/test/DayOfWeekServiceMT1005_vs0",
  "virtual_service": "DayOfWeekServiceMT1005_vs0"
},
{
  "org": "Architecture Frameworks",
  "physical_endpoint": "http://localhostdayofweek/DayOfWeek",
  "physical_service": "DayOfWeekServiceMT1006",
  "virtual_endpoint": "https://sandbox-laird-dv.crawl.com:443/testing/DayOfWeekServiceMT1006_vs0",
  "virtual_service": "DayOfWeekServiceMT1006_vs0"
},
{
  "org": "BruceSandbox",
  "physical_endpoint": "http://customerselfmgmt-bussvc-dv101.crawl.com/CMO/OnlineCharging/Charge/AmountChargingService_v1_0/AmountChargingService_v1_0",
  "physical_service": "AmountChargingService_v1_0",
  "virtual_endpoint": "https://sandbox-laird-dv.crawl.com:443/CMO/OnlineCharging/Charge/AmountChargingService_v1_0_vs0",
  "virtual_service": "AmountChargingService_v1_0_vs0"
},
{
  "org": "BruceSandbox",
  "physical_endpoint": "http://customerselfmgmt-bussvc-dv101.crawl.com/CMO/OnlineCharging/Charge/AmountChargingService_v1_0/AmountChargingService_v1_0",
  "physical_service": "AmountChargingService_v1_0",
  "virtual_endpoint": "https://sandbox-laird-dv.crawl.com:443/CMO/OnlineCharging/Charge/AmountChargingService_v1_0_vs2",
  "virtual_service": "AmountChargingService_v1_0_vs2"
},
{
  "org": "BruceSandbox",
  "physical_endpoint": "http://rmf-resourceordermgmt-dv103.crawl.com/v1/eo/securitymgmt/testing/loadtestservice-v1-0/LoadTestService_v1_0",
  "physical_service": "LoadTestService_v1_0",
  "virtual_endpoint": "https://sandbox-laird-dv.crawl.com:443/c1/EO/SecurityMgmt/testing/LoadTestService_v1_0_SOAP_vs0",
  "virtual_service": "LoadTestService_v1_0_vs0"
},
{
  "org": "Campaign Management",
  "physical_endpoint": "http://cmassurance-ccmgmt-dv103.crawl.com/v1/mso/campaignmgmt/actionadvisor/actionadvisormanagementservice-v1-0",
  "physical_service": "ActionAdvisorManagementService_v1_0",
  "virtual_endpoint": "https://sandbox-laird-dv.crawl.com:443/v1/mso/campaignmgmt/actionadvisor/actionadvisormanagementservice-v1-0_vs0",
  "virtual_service": "ActionAdvisorManagementService_v1_0_vs0"
},
{
  "org": "Campaign Management",
  "physical_endpoint": "http://cmassurance-ccmgmt-dv103.crawl.com/v1/mso/campaignmgmt/actionadvisorservice/actionadvisorservice-v1-0",
  "physical_service": "ActionAdvisorService_v1_0",
  "virtual_endpoint": "https://sandbox-laird-dv.crawl.com:443/MSO/CampaignMgmt/ActionAdvisorService_v1_0_vs0",
  "virtual_service": "ActionAdvisorService_v1_0_vs0"
},
{
  "org": "Campaign Management",
  "physical_endpoint": "http://cmassurance-ccmgmt-dv103.crawl.com/v1-1/mso/campaignmgmt/actionadvisorservice/actionadvisorservice-v1-1",
  "physical_service": "ActionAdvisorService_v1_1",
  "virtual_endpoint": "https://sandbox-laird-dv.crawl.com:443/mso/campaignmgmt/ActionAdvisorService_v1_1_vs0",
  "virtual_service": "ActionAdvisorService_v1_1_vs0"
},
{
  "org": "Campaign Management",
  "physical_endpoint": "http://cmassurance-ccmgmt-dv103.crawl.com/MSO/CampaignMgmt/ActionAdvisorService/ActionAdvisorService_v2_0",
  "physical_service": "ActionAdvisorService_v2_0",
  "virtual_endpoint": "https://sandbox-laird-dv.crawl.com:443/MSO/CampaignMgmt/ActionAdvisorService/ActionAdvisorService_v2_0_vs0",
  "virtual_service": "ActionAdvisorService_v2_0_vs0"
},
{
  "org": "Campaign Management",
  "physical_endpoint": "https://ca.smartbutton.com/WS/MemberSecurity.asmx",
  "physical_service": "AimiaMemberLoginMgmtSvc_v1_0",
  "virtual_endpoint": "https://sandbox-laird-dv.crawl.com:443/CMO/SelfMgmt/SOAP11/AimiaMemberLoginMgmtSvc_v1_0_vs0",
  "virtual_service": "AimiaMemberLoginMgmtSvc_v1_0_vs0"
},
{
  "org": "Campaign Management",
  "physical_endpoint": "https://ca.smartbutton.com/WS/MemberActivity.asmx",
  "physical_service": "AimiaMemberPointsQuerySvc_v1_0",
  "virtual_endpoint": "https://sandbox-laird-dv.crawl.com:443/CMO/SelfMgmt/SOAP11/AimiaMemberPointsQuerySvc_v1_0_vs0",
  "virtual_service": "AimiaMemberPointsQuerySvc_v1_0_vs0"
},
{
  "org": "Campaign Management",
  "physical_endpoint": "https://ca.smartbutton.com/WS/Portal.asmx",
  "physical_service": "AimiaPortalSvc_v1_0",
  "virtual_endpoint": "https://sandbox-laird-dv.crawl.com:443/CMO/SelfMgmt/SOAP11/AimiaPortalSvc_v1_0_vs0",
  "virtual_service": "AimiaPortalSvc_v1_0_vs0"
},
{
  "org": "Campaign Management",
  "physical_endpoint": "https://ca.smartbutton.com/WS/user.asmx",
  "physical_service": "AimiaUserSvc_v1_0",
  "virtual_endpoint": "https://sandbox-laird-dv.crawl.com:443/CMO/SelfMgmt/SOAP11/AimiaUserSvc_v1_0_vs0",
  "virtual_service": "AimiaUserSvc_v1_0_vs0"
},
{
  "org": "Campaign Management",
  "physical_endpoint": "http://cmf-custcontactmgmt-dv103.crawl.com/MSO/CampaignMgmt/Offer/BoltOnOfferService_v1_0",
  "physical_service": "BoltOnOfferService_v1_0",
  "virtual_endpoint": "https://sandbox-laird-dv.crawl.com:443/MSO/CampaignMgmt/Offer/BoltOnOfferService_v1_0_vs0",
  "virtual_service": "BoltOnOfferService_v1_0_vs0"
},
{
  "org": "Campaign Management",
  "physical_endpoint": "http://cmf-custcontactmgmt-dv103.crawl.com/MSO/CampaignMgmt/Offer/BoltOnOfferService_v1_1",
  "physical_service": "BoltOnOfferService_v1_1",
  "virtual_endpoint": "https://sandbox-laird-dv.crawl.com:443/MSO/CampaignMgmt/Offer/BoltOnOfferService_v1_1_vs0",
  "virtual_service": "BoltOnOfferService_v1_1_vs0"
},
{
  "org": "Campaign Management",
  "physical_endpoint": "http://cmf-custcontactmgmt-dv103.crawl.com/MSO/CampaignMgmt/Offer/BoltOnOfferService_v1_2",
  "physical_service": "BoltOnOfferService_v1_2",
  "virtual_endpoint": "https://sandbox-laird-dv.crawl.com:443/MSO/CampaignMgmt/Offer/BoltOnOfferService_v1_2_vs0",
  "virtual_service": "BoltOnOfferService_v1_2_vs0"
},
{
  "org": "Campaign Management",
  "physical_endpoint": "http://cmf-custcontactmgmt-dv103.crawl.com/MSO/CampaignMgmt/Offer/BoltOnOfferService_v1_3",
  "physical_service": "BoltOnOfferService_v1_3",
  "virtual_endpoint": "https://sandbox-laird-dv.crawl.com:443/MSO/CampaignMgmt/Offer/BoltOnOfferService_v1_3_vs0",
  "virtual_service": "BoltOnOfferService_v1_3_vs0"
},
{
  "org": "Campaign Management",
  "physical_endpoint": "http://cmf-custcontactmgmt-dv103.crawl.com/MSO/CampaignMgmt/Offer/BoltOnOfferService_v2_0",
  "physical_service": "BoltOnOfferService_v2_0",
  "virtual_endpoint": "https://sandbox-laird-dv.crawl.com:443/MSO/CampaignMgmt/Offer/BoltOnOfferService_v2_0_vs0",
  "virtual_service": "BoltOnOfferService_v2_0_vs0"
},
{
  "org": "Campaign Management",
  "physical_endpoint": "http://cmassurance-ccmgmt-dv103.crawl.com/CMO/ContactMgmt/BundleCommitmentExtSvc_v1_0",
  "physical_service": "BundleCommitmentExtSvc_v1_0_1",
  "virtual_endpoint": "https://sandbox-laird-dv.crawl.com:443/CMO/ContactMgmt/BundleCommitmentExtSvc_v1_0_1_vs0",
  "virtual_service": "BundleCommitmentExtSvc_v1_0_1_vs0"
},
{
  "org": "Campaign Management",
  "physical_endpoint": "http://cmassurance-ccmgmt-dv103.crawl.com/CMO/ContactMgmt/BundleCommitmentMgmtSvc_v1_1/BundleCommitmentMgmtSvc_v1_1",
  "physical_service": "BundleCommitmentMgmtSvc_v1_0_1",
  "virtual_endpoint": "https://sandbox-laird-dv.crawl.com:443/CMO/ContactMgmt/BundleCommitmentMgmtSvc_v1_0_vs0",
  "virtual_service": "BundleCommitmentMgmtSvc_v1_0_1_vs0"
},
{
  "org": "Campaign Management",
  "physical_endpoint": "http://cmassurance-ccmgmt-dv103.crawl.com/CMO/ContactMgmt/BundleCommitmentMgmtSvc_v1_1/BundleCommitmentMgmtSvc_v1_1",
  "physical_service": "BundleCommitmentMgmtSvc_v1_1",
  "virtual_endpoint": "https://sandbox-laird-dv.crawl.com:443/CMO/ContactMgmt/BundleCommitmentMgmtSvc_v1_1_vs0",
  "virtual_service": "BundleCommitmentMgmtSvc_v1_1_vs0"
},
{
  "org": "Campaign Management",
  "physical_endpoint": "http://cmassurance-ccmgmt-dv103.crawl.com/CMO/ContactMgmt/BundleCommitmentSvc_v1_1/BundleCommitmentSvc_v1_1",
  "physical_service": "BundleCommitmentSvc_v1_0_1",
  "virtual_endpoint": "https://sandbox-laird-dv.crawl.com:443/CMO/ContactMgmt/BundleCommitmentSvc_v1_0_vs0",
  "virtual_service": "BundleCommitmentSvc_v1_0_1_vs0"
},
{
  "org": "Campaign Management",
  "physical_endpoint": "http://cmassurance-ccmgmt-dv103.crawl.com/CMO/ContactMgmt/BundleCommitmentSvc_v1_1/BundleCommitmentSvc_v1_1",
  "physical_service": "BundleCommitmentSvc_v1_1",
  "virtual_endpoint": "https://sandbox-laird-dv.crawl.com:443/CMO/ContactMgmt/BundleCommitmentSvc_v1_1_vs0",
  "virtual_service": "BundleCommitmentSvc_v1_1_vs0"
},
{
  "org": "Campaign Management",
  "physical_endpoint": "http://cmassurance-ccmgmt-dv103.crawl.com/v1/mso/campaignmgmt/customer/customermarketingprofileservice-v1-0",
  "physical_service": "CustomerMarketingProfileService_v1_0",
  "virtual_endpoint": "https://sandbox-laird-dv.crawl.com:443/v1/mso/campaignmgmt/customer/CustomerMarketingProfileService_v1_0_vs0",
  "virtual_service": "CustomerMarketingProfileService_v1_0_vs0"
},
{
  "org": "Campaign Management",
  "physical_endpoint": "http://cmassurance-ccmgmt-dv103.crawl.com/v1-1/mso/campaignmgmt/customer/customermarketingprofileservice-v1-1",
  "physical_service": "CustomerMarketingProfileService_v1_1",
  "virtual_endpoint": "https://sandbox-laird-dv.crawl.com:443/v1-1/mso/campaignmgmt/customer/customermarketingprofileservice-v1-1_vs0",
  "virtual_service": "CustomerMarketingProfileService_v1_1_vs0"
},
{
  "org": "Campaign Management",
  "physical_endpoint": "http://cmassurance-ccmgmt-dv103.crawl.com/v2/mso/campaignmgmt/customer/customermarketingprofileservice-v2-0",
  "physical_service": "CustomerMarketingProfileService_v2_0",
  "virtual_endpoint": "https://sandbox-laird-dv.crawl.com:443/v2/mso/campaignmgmt/customer/customermarketingprofileservice-v2-0_vs0",
  "virtual_service": "CustomerMarketingProfileService_v2_0_vs0"
}
  ]
]

和file_2.json:

[
  {
    "pattern": "http://localhostdayofweek/",
    "url": [
      "http://cm-billingsvc2-west-pt01.crawl.com/",
      "http://policymanager-pt.crawl.com:30000/",
      "http://rmosr-resourcelifecyclemgmt-ps101.crawl.com/"
    ]
  },
  {
    "pattern": " https://207.229.22.173:9446/",
    "url": [
      " https://fbpm-itn01-west.crawl.com/",
      " https://fbpm-itn02-west.crawl.com/",
      " https://fbpm-itn03-west.crawl.com/"
    ]
  },
  {
    "pattern": "customermanagementesb-entk-dv01.crawl.com/",
    "url": [
      "http://customermanagementesb-pt168.crawl.com/"
    ]
  },
  {
    "pattern": "http://an05050.corp.ads:9080/",
    "url": [
      "http://abe-wbsf-pt3-01.osc.tac.net:9080/",
      "http://an05063.corp.ads:9080/",
      "http://fabric-st1.crawl.com:9080/"
    ]
  },
  {
    "pattern": "http://an05057.corp.ads:9080/",
    "url": [
      "http://abe-wbsf-at-01.osc.tac.net:9080/",
      "http://abe-wbsf-pt1-01.osc.tac.net:9080/",
      "http://abe-wbsf-pt3-01.osc.tac.net:9080/",
      "http://an05050.corp.ads:9080/",
      "http://cbpm-itn01-west.crawl.com/",
      "http://cbpm-itn02-west.crawl.com/",
      "http://cbpm-itn03-west.crawl.com/",
      "http://cbpm-itn04-west.crawl.com/",
      "http://fabric-st1.crawl.com:9080/"
    ]
  },
  {
    "pattern": "http://asfweb-wk02.crawl.com/",
    "url": [
      "http://asfweb-is03.crawl.com/",
      "http://asfweb-is05.crawl.com/",
      "http://asfweb-is06.crawl.com/",
      "http://asfweb-is09.crawl.com/",
      "http://asfweb-itn01.crawl.com/",
      "http://asfweb-itn02.crawl.com/",
      "http://asfweb-itn03.crawl.com/",
      "http://asfweb-itn04.crawl.com/"
    ]
   }
]
从file_1.json

,我希望能够搜索以http [s]:// hostname / on file_2.json开头的每个physical_endpoint,如果匹配,则将.url数组附加到file_1 .json as .available_urls。

预期的输出是这样的:

[
  [
    {
      "org": "Architecture Frameworks",
      "physical_endpoint": "http://localhostdayofweek/DayOfWeek",
      "physical_service": "DayOfWeekServiceMT1001",
      "virtual_endpoint": "https://sandbox-laird-dv.crawl.com:443/testpromotion/DayOfWeekServiceMT1001_vs0",
      "virtual_service": "DayOfWeekServiceMT1001_vs0",
      "available_urls": [
          "http://cm-billingsvc2-west-pt01.crawl.com/",
          "http://policymanager-pt.crawl.com:30000/",
          "http://rmosr-resourcelifecyclemgmt-ps101.crawl.com/"
        ]
    },
    {
      "org": "Architecture Frameworks",
      "physical_endpoint": "http://localhostdayofweek/DayOfWeek/updated",
      "physical_service": "DayOfWeekServiceMT1002",
      "virtual_endpoint": "https://sandbox-laird-dv.crawl.com:443/UPDATE/DayOfWeekServiceMT1002_vs0_2",
      "virtual_service": "DayOfWeekServiceMT1002_vs0",
      "available_urls": [
          "http://cm-billingsvc2-west-pt01.crawl.com/",
          "http://policymanager-pt.crawl.com:30000/",
          "http://rmosr-resourcelifecyclemgmt-ps101.crawl.com/"
        ]
    },
    {
      "org": "Architecture Frameworks",
      "physical_endpoint": "http://localhostdayofweek/DayOfWeek",
      "physical_service": "DayOfWeekServiceMT1004",
      "virtual_endpoint": "https://sandbox-laird-dv.crawl.com:443/test/DayOfWeekServiceMT1004_vs0",
      "virtual_service": "DayOfWeekServiceMT1004_vs0",
      "available_urls": [
          "http://cm-billingsvc2-west-pt01.crawl.com/",
          "http://policymanager-pt.crawl.com:30000/",
          "http://rmosr-resourcelifecyclemgmt-ps101.crawl.com/"
        ]
    },
    {
      "org": "Architecture Frameworks",
      "physical_endpoint": "http://localhostdayofweek/DayOfWeek",
      "physical_service": "DayOfWeekServiceMT1005",
      "virtual_endpoint": "https://sandbox-laird-dv.crawl.com:443/test/DayOfWeekServiceMT1005_vs0",
      "virtual_service": "DayOfWeekServiceMT1005_vs0",
      "available_urls": [
          "http://cm-billingsvc2-west-pt01.crawl.com/",
          "http://policymanager-pt.crawl.com:30000/",
          "http://rmosr-resourcelifecyclemgmt-ps101.crawl.com/"
        ]
    },
    {
      "org": "Architecture Frameworks",
      "physical_endpoint": "http://localhostdayofweek/DayOfWeek",
      "physical_service": "DayOfWeekServiceMT1006",
      "virtual_endpoint": "https://sandbox-laird-dv.crawl.com:443/testing/DayOfWeekServiceMT1006_vs0",
      "virtual_service": "DayOfWeekServiceMT1006_vs0",
      "available_urls": [
          "http://cm-billingsvc2-west-pt01.crawl.com/",
          "http://policymanager-pt.crawl.com:30000/",
          "http://rmosr-resourcelifecyclemgmt-ps101.crawl.com/"
        ]
    },
    {
      "org": "BruceSandbox",
      "physical_endpoint": "http://customerselfmgmt-bussvc-dv101.crawl.com/CMO/OnlineCharging/Charge/AmountChargingService_v1_0/AmountChargingService_v1_0",
      "physical_service": "AmountChargingService_v1_0",
      "virtual_endpoint": "https://sandbox-laird-dv.crawl.com:443/CMO/OnlineCharging/Charge/AmountChargingService_v1_0_vs0",
      "virtual_service": "AmountChargingService_v1_0_vs0"
    },
    {
      "org": "BruceSandbox",
      "physical_endpoint": "http://customerselfmgmt-bussvc-dv101.crawl.com/CMO/OnlineCharging/Charge/AmountChargingService_v1_0/AmountChargingService_v1_0",
      "physical_service": "AmountChargingService_v1_0",
      "virtual_endpoint": "https://sandbox-laird-dv.crawl.com:443/CMO/OnlineCharging/Charge/AmountChargingService_v1_0_vs2",
      "virtual_service": "AmountChargingService_v1_0_vs2"
    }
  ]
]

1 个答案:

答案 0 :(得分:0)

jq 解决方案:

jq --slurpfile patterns file_2.json \
'($patterns[0] | map({(.pattern): .url}) | add) as $patterns 
 | .[0] | [ map((.physical_endpoint | match("^http://[^/]+/").string) as $url 
                 | if ($patterns | has($url)) then .available_urls = $patterns[$url]
                   else . end) ]' file_1.json
  • ($patterns[0] | map({(.pattern): .url}) | add) as $patterns - 生成哈希结构以处理优化处理
  • (.physical_endpoint | match("^http://[^/]+/").string) as $url - 指向提取的主机名

输出:

[
  [
    {
      "org": "Architecture Frameworks",
      "physical_endpoint": "http://localhostdayofweek/DayOfWeek",
      "physical_service": "DayOfWeekServiceMT1001",
      "virtual_endpoint": "https://sandbox-laird-dv.crawl.com:443/testpromotion/DayOfWeekServiceMT1001_vs0",
      "virtual_service": "DayOfWeekServiceMT1001_vs0",
      "available_urls": [
        "http://cm-billingsvc2-west-pt01.crawl.com/",
        "http://policymanager-pt.crawl.com:30000/",
        "http://rmosr-resourcelifecyclemgmt-ps101.crawl.com/"
      ]
    },
    {
      "org": "Architecture Frameworks",
      "physical_endpoint": "http://localhostdayofweek/DayOfWeek/updated",
      "physical_service": "DayOfWeekServiceMT1002",
      "virtual_endpoint": "https://sandbox-laird-dv.crawl.com:443/UPDATE/DayOfWeekServiceMT1002_vs0_2",
      "virtual_service": "DayOfWeekServiceMT1002_vs0",
      "available_urls": [
        "http://cm-billingsvc2-west-pt01.crawl.com/",
        "http://policymanager-pt.crawl.com:30000/",
        "http://rmosr-resourcelifecyclemgmt-ps101.crawl.com/"
      ]
    },
    {
      "org": "Architecture Frameworks",
      "physical_endpoint": "http://localhostdayofweek/DayOfWeek",
      "physical_service": "DayOfWeekServiceMT1004",
      "virtual_endpoint": "https://sandbox-laird-dv.crawl.com:443/test/DayOfWeekServiceMT1004_vs0",
      "virtual_service": "DayOfWeekServiceMT1004_vs0",
      "available_urls": [
        "http://cm-billingsvc2-west-pt01.crawl.com/",
        "http://policymanager-pt.crawl.com:30000/",
        "http://rmosr-resourcelifecyclemgmt-ps101.crawl.com/"
      ]
    },
    {
      "org": "Architecture Frameworks",
      "physical_endpoint": "http://localhostdayofweek/DayOfWeek",
      "physical_service": "DayOfWeekServiceMT1005",
      "virtual_endpoint": "https://sandbox-laird-dv.crawl.com:443/test/DayOfWeekServiceMT1005_vs0",
      "virtual_service": "DayOfWeekServiceMT1005_vs0",
      "available_urls": [
        "http://cm-billingsvc2-west-pt01.crawl.com/",
        "http://policymanager-pt.crawl.com:30000/",
        "http://rmosr-resourcelifecyclemgmt-ps101.crawl.com/"
      ]
    },
    {
      "org": "Architecture Frameworks",
      "physical_endpoint": "http://localhostdayofweek/DayOfWeek",
      "physical_service": "DayOfWeekServiceMT1006",
      "virtual_endpoint": "https://sandbox-laird-dv.crawl.com:443/testing/DayOfWeekServiceMT1006_vs0",
      "virtual_service": "DayOfWeekServiceMT1006_vs0",
      "available_urls": [
        "http://cm-billingsvc2-west-pt01.crawl.com/",
        "http://policymanager-pt.crawl.com:30000/",
        "http://rmosr-resourcelifecyclemgmt-ps101.crawl.com/"
      ]
    },
    {
      "org": "BruceSandbox",
      "physical_endpoint": "http://customerselfmgmt-bussvc-dv101.crawl.com/CMO/OnlineCharging/Charge/AmountChargingService_v1_0/AmountChargingService_v1_0",
      "physical_service": "AmountChargingService_v1_0",
      "virtual_endpoint": "https://sandbox-laird-dv.crawl.com:443/CMO/OnlineCharging/Charge/AmountChargingService_v1_0_vs0",
      "virtual_service": "AmountChargingService_v1_0_vs0"
    },
    {
      "org": "BruceSandbox",
      "physical_endpoint": "http://customerselfmgmt-bussvc-dv101.crawl.com/CMO/OnlineCharging/Charge/AmountChargingService_v1_0/AmountChargingService_v1_0",
      "physical_service": "AmountChargingService_v1_0",
      "virtual_endpoint": "https://sandbox-laird-dv.crawl.com:443/CMO/OnlineCharging/Charge/AmountChargingService_v1_0_vs2",
      "virtual_service": "AmountChargingService_v1_0_vs2"
    },
    {
      "org": "BruceSandbox",
      "physical_endpoint": "http://rmf-resourceordermgmt-dv103.crawl.com/v1/eo/securitymgmt/testing/loadtestservice-v1-0/LoadTestService_v1_0",
      "physical_service": "LoadTestService_v1_0",
      "virtual_endpoint": "https://sandbox-laird-dv.crawl.com:443/c1/EO/SecurityMgmt/testing/LoadTestService_v1_0_SOAP_vs0",
      "virtual_service": "LoadTestService_v1_0_vs0"
    },
    {
      "org": "Campaign Management",
      "physical_endpoint": "http://cmassurance-ccmgmt-dv103.crawl.com/v1/mso/campaignmgmt/actionadvisor/actionadvisormanagementservice-v1-0",
      "physical_service": "ActionAdvisorManagementService_v1_0",
      "virtual_endpoint": "https://sandbox-laird-dv.crawl.com:443/v1/mso/campaignmgmt/actionadvisor/actionadvisormanagementservice-v1-0_vs0",
      "virtual_service": "ActionAdvisorManagementService_v1_0_vs0"
    },
    {
      "org": "Campaign Management",
      "physical_endpoint": "http://cmassurance-ccmgmt-dv103.crawl.com/v1/mso/campaignmgmt/actionadvisorservice/actionadvisorservice-v1-0",
      "physical_service": "ActionAdvisorService_v1_0",
      "virtual_endpoint": "https://sandbox-laird-dv.crawl.com:443/MSO/CampaignMgmt/ActionAdvisorService_v1_0_vs0",
      "virtual_service": "ActionAdvisorService_v1_0_vs0"
    },
    {
      "org": "Campaign Management",
      "physical_endpoint": "http://cmassurance-ccmgmt-dv103.crawl.com/v1-1/mso/campaignmgmt/actionadvisorservice/actionadvisorservice-v1-1",
      "physical_service": "ActionAdvisorService_v1_1",
      "virtual_endpoint": "https://sandbox-laird-dv.crawl.com:443/mso/campaignmgmt/ActionAdvisorService_v1_1_vs0",
      "virtual_service": "ActionAdvisorService_v1_1_vs0"
    },
    {
      "org": "Campaign Management",
      "physical_endpoint": "http://cmassurance-ccmgmt-dv103.crawl.com/MSO/CampaignMgmt/ActionAdvisorService/ActionAdvisorService_v2_0",
      "physical_service": "ActionAdvisorService_v2_0",
      "virtual_endpoint": "https://sandbox-laird-dv.crawl.com:443/MSO/CampaignMgmt/ActionAdvisorService/ActionAdvisorService_v2_0_vs0",
      "virtual_service": "ActionAdvisorService_v2_0_vs0"
    },
    {
      "org": "Campaign Management",
      "physical_endpoint": "http://cmf-custcontactmgmt-dv103.crawl.com/MSO/CampaignMgmt/Offer/BoltOnOfferService_v1_0",
      "physical_service": "BoltOnOfferService_v1_0",
      "virtual_endpoint": "https://sandbox-laird-dv.crawl.com:443/MSO/CampaignMgmt/Offer/BoltOnOfferService_v1_0_vs0",
      "virtual_service": "BoltOnOfferService_v1_0_vs0"
    },
    {
      "org": "Campaign Management",
      "physical_endpoint": "http://cmf-custcontactmgmt-dv103.crawl.com/MSO/CampaignMgmt/Offer/BoltOnOfferService_v1_1",
      "physical_service": "BoltOnOfferService_v1_1",
      "virtual_endpoint": "https://sandbox-laird-dv.crawl.com:443/MSO/CampaignMgmt/Offer/BoltOnOfferService_v1_1_vs0",
      "virtual_service": "BoltOnOfferService_v1_1_vs0"
    },
    {
      "org": "Campaign Management",
      "physical_endpoint": "http://cmf-custcontactmgmt-dv103.crawl.com/MSO/CampaignMgmt/Offer/BoltOnOfferService_v1_2",
      "physical_service": "BoltOnOfferService_v1_2",
      "virtual_endpoint": "https://sandbox-laird-dv.crawl.com:443/MSO/CampaignMgmt/Offer/BoltOnOfferService_v1_2_vs0",
      "virtual_service": "BoltOnOfferService_v1_2_vs0"
    },
    {
      "org": "Campaign Management",
      "physical_endpoint": "http://cmf-custcontactmgmt-dv103.crawl.com/MSO/CampaignMgmt/Offer/BoltOnOfferService_v1_3",
      "physical_service": "BoltOnOfferService_v1_3",
      "virtual_endpoint": "https://sandbox-laird-dv.crawl.com:443/MSO/CampaignMgmt/Offer/BoltOnOfferService_v1_3_vs0",
      "virtual_service": "BoltOnOfferService_v1_3_vs0"
    },
    {
      "org": "Campaign Management",
      "physical_endpoint": "http://cmf-custcontactmgmt-dv103.crawl.com/MSO/CampaignMgmt/Offer/BoltOnOfferService_v2_0",
      "physical_service": "BoltOnOfferService_v2_0",
      "virtual_endpoint": "https://sandbox-laird-dv.crawl.com:443/MSO/CampaignMgmt/Offer/BoltOnOfferService_v2_0_vs0",
      "virtual_service": "BoltOnOfferService_v2_0_vs0"
    },
    {
      "org": "Campaign Management",
      "physical_endpoint": "http://cmassurance-ccmgmt-dv103.crawl.com/CMO/ContactMgmt/BundleCommitmentExtSvc_v1_0",
      "physical_service": "BundleCommitmentExtSvc_v1_0_1",
      "virtual_endpoint": "https://sandbox-laird-dv.crawl.com:443/CMO/ContactMgmt/BundleCommitmentExtSvc_v1_0_1_vs0",
      "virtual_service": "BundleCommitmentExtSvc_v1_0_1_vs0"
    },
    {
      "org": "Campaign Management",
      "physical_endpoint": "http://cmassurance-ccmgmt-dv103.crawl.com/CMO/ContactMgmt/BundleCommitmentMgmtSvc_v1_1/BundleCommitmentMgmtSvc_v1_1",
      "physical_service": "BundleCommitmentMgmtSvc_v1_0_1",
      "virtual_endpoint": "https://sandbox-laird-dv.crawl.com:443/CMO/ContactMgmt/BundleCommitmentMgmtSvc_v1_0_vs0",
      "virtual_service": "BundleCommitmentMgmtSvc_v1_0_1_vs0"
    },
    {
      "org": "Campaign Management",
      "physical_endpoint": "http://cmassurance-ccmgmt-dv103.crawl.com/CMO/ContactMgmt/BundleCommitmentMgmtSvc_v1_1/BundleCommitmentMgmtSvc_v1_1",
      "physical_service": "BundleCommitmentMgmtSvc_v1_1",
      "virtual_endpoint": "https://sandbox-laird-dv.crawl.com:443/CMO/ContactMgmt/BundleCommitmentMgmtSvc_v1_1_vs0",
      "virtual_service": "BundleCommitmentMgmtSvc_v1_1_vs0"
    },
    {
      "org": "Campaign Management",
      "physical_endpoint": "http://cmassurance-ccmgmt-dv103.crawl.com/CMO/ContactMgmt/BundleCommitmentSvc_v1_1/BundleCommitmentSvc_v1_1",
      "physical_service": "BundleCommitmentSvc_v1_0_1",
      "virtual_endpoint": "https://sandbox-laird-dv.crawl.com:443/CMO/ContactMgmt/BundleCommitmentSvc_v1_0_vs0",
      "virtual_service": "BundleCommitmentSvc_v1_0_1_vs0"
    },
    {
      "org": "Campaign Management",
      "physical_endpoint": "http://cmassurance-ccmgmt-dv103.crawl.com/CMO/ContactMgmt/BundleCommitmentSvc_v1_1/BundleCommitmentSvc_v1_1",
      "physical_service": "BundleCommitmentSvc_v1_1",
      "virtual_endpoint": "https://sandbox-laird-dv.crawl.com:443/CMO/ContactMgmt/BundleCommitmentSvc_v1_1_vs0",
      "virtual_service": "BundleCommitmentSvc_v1_1_vs0"
    },
    {
      "org": "Campaign Management",
      "physical_endpoint": "http://cmassurance-ccmgmt-dv103.crawl.com/v1/mso/campaignmgmt/customer/customermarketingprofileservice-v1-0",
      "physical_service": "CustomerMarketingProfileService_v1_0",
      "virtual_endpoint": "https://sandbox-laird-dv.crawl.com:443/v1/mso/campaignmgmt/customer/CustomerMarketingProfileService_v1_0_vs0",
      "virtual_service": "CustomerMarketingProfileService_v1_0_vs0"
    },
    {
      "org": "Campaign Management",
      "physical_endpoint": "http://cmassurance-ccmgmt-dv103.crawl.com/v1-1/mso/campaignmgmt/customer/customermarketingprofileservice-v1-1",
      "physical_service": "CustomerMarketingProfileService_v1_1",
      "virtual_endpoint": "https://sandbox-laird-dv.crawl.com:443/v1-1/mso/campaignmgmt/customer/customermarketingprofileservice-v1-1_vs0",
      "virtual_service": "CustomerMarketingProfileService_v1_1_vs0"
    },
    {
      "org": "Campaign Management",
      "physical_endpoint": "http://cmassurance-ccmgmt-dv103.crawl.com/v2/mso/campaignmgmt/customer/customermarketingprofileservice-v2-0",
      "physical_service": "CustomerMarketingProfileService_v2_0",
      "virtual_endpoint": "https://sandbox-laird-dv.crawl.com:443/v2/mso/campaignmgmt/customer/customermarketingprofileservice-v2-0_vs0",
      "virtual_service": "CustomerMarketingProfileService_v2_0_vs0"
    }
  ]
]