在SSIS中使用C#脚本分析JSON字符串

本文关键字:JSON 字符串 脚本 SSIS | 更新日期: 2023-09-27 18:24:55

我正在SSIS中使用C#脚本任务从CurrencyLayer检索美元->GBP汇率。我使用了以下代码:

string url = Dts.Variables["User::CurrencyLayerURL"].Value.ToString();
WebClient wc = new WebClient();
var jsonString = wc.DownloadString(url);

要成功检索以下JSON字符串:

{  
   "success":true,
   "terms":"https:'/'/currencylayer.com'/terms",
   "privacy":"https:'/'/currencylayer.com'/privacy",
   "historical":true,
   "date":"2015-11-28",
   "timestamp":1448755199,
   "source":"USD",
   "quotes":{  
      "USDGBP":0.66527
   }
}

然而,在这一点上,我不确定如何仅检索与"美元-英镑"汇率相对应的0.66527值,并将其传递给变量。我看到了许多使用JSON.net库的建议,但我无法将任何第三方库添加到该项目中。如有任何帮助,我们将不胜感激。

在SSIS中使用C#脚本分析JSON字符串

您可以使用System.Json Namespace中的JsonValue类。

JsonValue value = JsonValue.Parse(jsonString);
var quote =  (string)result["quotes"]["USDGBP"];

或者您可以使用System.Web.Script.Serialization 中的JavaScriptSerializer

var serializer = new JavaScriptSerializer();
var result = serializer.Deserialize<ExpandoObject>(jsonString);
var quote = result.quotes.USDGBP;

或在System.Web.HelpersJson.Decode

Var result = Json.Decode(jsonString);
var quote = result.quotes.USDGBP;

使用json.NET:解析json对象

dynamic d = JObject.Parse(jsonString );
Console.WriteLine(d.quotes.USDGBP);

您可以使用JavaScriptSerializer您可以添加Syatem.Web.Extensions命名空间引用。

    var serializer = new JavaScriptSerializer();
     //Serialize
     var serializedResult = serializer.Serialize(Object);
     //Deserialize
   var deserializedResult = serializer.Deserialize<OutputObjectType>(jsonString);