2016-10-26 2 views
1

Я хочу получить информацию о советах и ​​проблемах с печатью (используя JIRA Rest API: https://docs.atlassian.com/jira-software/REST/cloud/#agile/1.0/board-getIssuesForBoard), но я не хочу получать поля всех проблем, - мне нужны поля: «sprint »и« эпический ».JIRA REST API, ответ JSON, C#

У меня есть ошибка:

Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of an object.

В строке:

var response = client.RestClient.ExecuteRequest<ResponseIssues>(Method.GET, 
         @"/rest/agile/1.0/board/2/issue?fields='epic,sprint'"); 

кода (C#):

var client = Atlassian.Jira.Jira.CreateRestClient(jiraurl, login, password); 
var response = client.RestClient.ExecuteRequest<ResponseIssues>(Method.GET, 
         @"/rest/agile/1.0/board/2/issue?fields='epic,sprint'"); 
foreach (var issue in response.issues) 
{ 
    Console.WriteLine(issue.fields.epic.summary); 
} 

ResponseIssues класса (C#):

public class ResponseIssues 
{ 
    public string expand; 
    public int startAt; 
    public int maxResults; 
    public int total; 
    public List<Issue_> issues; 
}  
public class Issue_ 
{ 
    public string expand; 
    public string id; 
    public string self; 
    public string key; 
    public Field fields; 
}  
public class Field 
{ 
    public Sprint sprint; 
    public Epic epic;    
} 
public class Sprint 
{ 
    public int id; 
    public string self; 
    public string state; 
    public string name; 
}  
public class Epic 
{ 
    public int id; 
    public string self; 
    public string name; 
    public string summary; 
    public Color color; 
    public bool done; 
}  
public class Color 
{ 
    public string key; 
} 
+0

Вы можете включить запрос след: https://bitbucket.org/farmas/atlassian.net-sdk/wiki/How%20to%20Debug%20Problems В любом случае вы можете, пожалуйста, проверьте, какой значения равны нулю? Это RestClient, ответ или что-то еще? Возможно, вы не можете десериализовать результат в «ResponseIssues» из-за неправильного результата. – kat1330

+0

@ kat1330, все, что в "fileds" я не могу получить. Я пытаюсь получить «описание», но я получаю ошибку: «Ссылка на объект не установлена ​​в экземпляр объекта». –

ответ

1

Кажется, что что-то не получило правильной инициализации. Всякий раз, когда это происходит со мной, я разбиваю цепочку с заданиями, чтобы попытаться выяснить, какой объект имеет значение null. Также поймайте исключение и изучите его в визуальной студии. В вашем случае, попробуйте следующее:

try{ 
    var client = Atlassian.Jira.Jira.CreateRestClient(jiraurl, login, password); 
    // Add breakpoint... is client null? There could be an issue with your login, password or the url you've passed. 
    // Or maybe it's Atlassian.Jira.CreateRestClient (instead of Jira.Jira.CreateRestClient), though that should get flagged by the compiler unless there's some recursion or parenting in the Jira namespace 
    var restClient = client.RestClient; 
    // Add breakpoint... is restClient null? Could be that CreateRestClient is lazy-loading, in which case I'd look at the url, login and password again. 
    var response = restClient.ExecuteRequest<ResponseIssues>(Method.GET, 
        @"/rest/agile/1.0/board/2/issue?fields='epic,sprint'"); 
} 
catch(Exception ex) 
{ 
    Console.WriteLine(ex); // Or just breakpoint here and explore the exception. 
} 
+0

null Refernce исключение в: "Console.WriteLine (выпуск.fields.epic.summary);" –

+0

thnx, я нахожу ошибку: это не в коде, в вопросах jira нет спринтов. –

+0

все, что в "fileds" я не могу получить. Я пытаюсь получить «описание», но я получаю ошибку: «Ссылка на объект не установлена ​​в экземпляр объекта». –

0

Simply Travels «issues» => «поля» получили ваш «спринт» и «эпический».

+0

Если вы читаете мой код, вы видите - я делаю это. но я не знаю, что я делаю неправильно.: \ –

0
var response = client.RestClient.ExecuteRequest<ResponseIssues>(Method.GET, 
         @"/rest/agile/1.0/board/2/issue?fields='epic,sprint'"); 
      var jo = JObject.Parse(response); 
      var id = jo["issues"]["fields"]['sprint']['id'].ToString(); 
      var self= jo["issues"]["fields"]['sprint']['self'].ToString(); 
      var state= jo["issues"]["fields"]['sprint']['state'].ToString(); 
      var name= jo["issues"]["fields"]['sprint']['name'].ToString(); 
      Console.WriteLine(id); 
      Console.WriteLine(self); 
      Console.WriteLine(state); 
      Console.WriteLine(name); 
      Console.Read(); 
+0

Это не помогает OP, потому что самая первая строка - это то, где происходит исключение nullreference. – HeyZiko