![](/img/trans.png)
[英]Cannot convert dynamicJsonObject to Dictionary<string, object>
[英]Rally c# API - convert DynamicJsonObject to a class object
我正在構建自己的應用程序以與Rally API進行通信。
我所安裝的是Rally c#SDK ,並將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.