我正在构建自己的应用程序以与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);
}
}
这个&#39;工作&#39;但它感觉非常低效,并且加载较大的用户故事很慢。
问题:
是否有更好的&#39; /&#39;对&#39;这样做的方法?我问,因为我之前不必使用这些数据类型。
干杯
修改 一些答案是使用JSON.net。我目前正在使用它来做我的转换器,我的问题更具体地与Type Rally SDK返回给我,我无法访问原始JSON,因为它从我身上抽象出来。
类型说明
DynamicJsonObject = A type from the Rally SDK
queryTaskResult.Results = IEnumerable<dynamic>
result = DynamicJsonObject
答案 0 :(得分:0)
您可以直接在返回的JSON字符串上使用JsonConvert.DeserializeObject
,并将其转换为所需的类。不需要字典。
var task = JsonConvert.DeserializeObject<RallyDataTypes.Task>(queryTaskResult.Results);
userstory.TaskList.Add(task);
它将处理将JSON对象字段匹配到C#中的各自属性。