簡體   English   中英

Rally C#API-將DynamicJsonObject轉換為類對象

[英]Rally c# API - convert DynamicJsonObject to a class object

我正在構建自己的應用程序以與Rally API進行通信。

我所安裝的是Rally c#SDK ,並將JSON響應轉換為強類型類。

我通過以下方式進行轉換:

  1. 獲取dynamicJsonObject
  2. 將其轉換為字典
  3. 將字典序列化為JSON
  4. 將JSON反序列化到我的類中。

這是我的代碼片段:

 var taskRequest = new Request()
    {
        ArtifactName = "task",
        Query = new Query("WorkProduct.OID", Query.Operator.Equals, userstory.ObjectID.ToString())
    };
    QueryResult queryTaskResult = api.Query(taskRequest);
    if (queryTaskResult.TotalResultCount > 0)
    {
        foreach (DynamicJsonObject result in queryTaskResult.Results)
        {
            var json = JsonConvert.SerializeObject(result.ToDictionary());
            var task = JsonConvert.DeserializeObject<RallyDataTypes.Task>(json);
            userstory.TaskList.Add(task);
        }
    }

這是“有效的”,但感覺效率很低,加載較大的用戶故事時速度很慢。

題:

是否有“更好” /“正確”的方式來做到這一點? 我問,因為我之前不必使用這些dataTypes。

干杯

編輯:一些答案已經使用JSON.net。 我目前正在使用它進行轉換,我的問題更具體地是與Rally SDK返回給我的Type有關,我無法訪問原始JSON,因為它是從我這里抽象出來的。

類型說明

DynamicJsonObject  = A type from the Rally SDK
queryTaskResult.Results = IEnumerable<dynamic>
result = DynamicJsonObject

您可以直接在返回的JSON字符串上使用JsonConvert.DeserializeObject ,並將其轉換為所需的類。 無需字典。

var task = JsonConvert.DeserializeObject<RallyDataTypes.Task>(queryTaskResult.Results);
userstory.TaskList.Add(task);

它將負責將JSON對象字段匹配到C#中它們各自的屬性中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM