我正在尝试建立Mike Jansen的JIRA REST Client,我正在尝试提供JIRA版本信息。我是JSON的新手,所以我不确定这只是格式问题还是什么。
调试时,我有以下标记:
{[
{
"self": "https://<company>.atlassian.net/rest/api/2/version/10101",
"id": "10101",
"name": "2012.3",
"archived": false,
"released": false,
"releaseDate": "2012-10-08"
},
{
"self": "https://<company>.atlassian.net/rest/api/2/version/10200",
"id": "10200",
"name": "2012.4",
"archived": false,
"released": false
}
]}
以及以下代码行
token.Children().Values<T>()
抛出以下错误
Cannot cast Newtonsoft.Json.Linq.JProperty to Newtonsoft.Json.Linq.JToken
尝试将两个版本的标记转换为相应的JiraVersion类时:
using System;
namespace JiraRestClient
{
public class JiraVersion : JiraObjectBase, IJiraVersion
{
public JiraVersion(IJiraRestResponse jiraResponse) : base(jiraResponse) { }
public string Id { get { return Get<string>("Id", "id"); } }
public string Name { get { return Get<string>("Name", "name"); } }
}
}
有人可以帮帮我吗?
答案 0 :(得分:3)
熟悉JSON的人可能已经很快注意到它实际上是格式化的问题(包围数组的额外花括号)。就像我说的,我是JSON的新手,但我研究的最终结果是JsonWrapper.TryGetPath(...)方法试图遍历JObject树,并且当被检索的是一个数组时,不会产生格式正确的JSON 。
我的解决方案是通过从解决方案中删除JSON.Net来简化操作,并且仅依赖于RestSharp(仅因为它使得请求变得如此容易)和System.Web.Script.Serialization.JavaScriptSerializer()。反序列化( response.Content)方法。