3

MikeJansenのJIRARESTクライアントを基に構築しようとしています。また、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

2つのバージョントークンを対応する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"); } }
    }
}

誰かが私を助けることができますか?

4

1 に答える 1

3

JSONに精通している人は、JSONが実際にはフォーマット(配列を囲む余分な中括弧)の問題であることにすぐに気付くかもしれません。私が言ったように、私はJSONを初めて使用しますが、私の調査の最終結果は、JsonWrapper.TryGetPath(...)メソッドがJObjectツリーをトラバースしようとし、取得されるものが配列である場合に正しくフォーマットされたJSONを生成しないことです。 。

私の解決策は、JSON.Netをソリューションから削除し、RestSharp(リクエストを簡単に作成できるという理由だけで)とSystem.Web.Script.Serialization.JavaScriptSerializer()。Deserialize(response.Content ) アプローチ。

于 2012-11-08T17:59:16.413 に答える