2016-06-06 6 views
1

Я пытаюсь получить несколько актеров из Джиры. Код для оболочки используется в вызове Gson.fromJson. Я использовал что-то подобное с json-строкой, в которой не было массива, в котором была информация, в которой я нуждался, и она работала нормально, поэтому проблема, похоже, связана с массивом, но я не уверен на 100%:json и wrapper для gson

import com.google.gson.annotations.SerializedName; 

public class JiraRoleJsonWrapper { 
    @SerializedName("self") 
    private String self; 
    @SerializedName("name") 
    private String name; 
    @SerializedName("id") 
    private int id; 
    @SerializedName("description") 
    private String description; 
    @SerializedName("actors") 
    private JiraActors[] actors; 

    public JiraActors[] getActors() { 
     return actors; 
    } 
    public void setActors(JiraActors[] actors) { 
     this.actors = actors; 
    } 

    public String getSelf() { 
     return self; 
    } 

    public void setSelf(String self) { 
     this.self = self; 
    } 

    public int getId() { 
     return id; 
    } 

    public void setId(int id) { 
     this.id = id; 
    } 

    public String getDescription() { 
     return description; 
    } 

    public void setDescription(String key) { 
     this.description = description; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    /* 
    public String[] getAvatarUrls() { 
     return avatarUrls; 
    } 

    public void setAvatarUrls(String[] avatarUrls) { 
     this.avatarUrls = avatarUrls; 
    } 
    */ 
} 

class JiraActors { 
    @SerializedName("id") 
    private int id; 
    @SerializedName("displayNme") 
    private String displayName; 
    @SerializedName("type") 
    private String type; 
    @SerializedName("name") 
    private String name; 
    //@SerializedName("avatarUrl") 
    //private String avatarUrl; 

    public int getId() { 
     return id; 
    } 

    public void setId(int id) { 
     this.id = id; 
    } 

    public String getDisplayName() { 
     return displayName; 
    } 

    public void setDisplayName(String displayName) { 
     this.displayName = displayName; 
    } 

    public String getType() { 
     return type; 
    } 

    public void setType(String type) { 
     this.type = type; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

} 

JSON он получит:

{ 
    "self":"http://someserver.com:8080/apps/jira/rest/api/2/project/10741/role/10002", 
"name":"Administrators", 
"id":10002, 
"description":"A project role", 
"actors":[ 
    { 
     "id":12432, 
     "displayName":"Joe Smith", 
     "type":"atlassian-user-role-actor", 
     "name":"joesmi", 
     "avatarUrl":"/apps/jira/secure/useravatar?size=xsmall&ownerId=dawsmi&avatarId=12245" 
    }, 
    { 
     "id":12612, 
     "displayName":"Smurfette Desdemona", 
     "type":"atlassian-user-role-actor", 
     "name":"smudes", 
     "avatarUrl":"/apps/jira/secure/useravatar?size=xsmall&ownerId=lamade&avatarId=10100" 
    }, 

Это показывает двух актеров, и формат JSON. Обратите внимание, что я не ответил на полный ответ. Он просто показывает двух актеров.

В моем коде, я попытался следующие, чтобы получить актеров:

InputStream is = response.getEntityInputStream(); 
       Reader reader = new InputStreamReader(is); 
       Gson gson = new Gson(); 

       JiraRoleJsonWrapper[] jiraRoleJsonWrapper = gson.fromJson(reader, JiraRoleJsonWrapper[].class); 
       for (JiraRoleJsonWrapper w : jiraRoleJsonWrapper) { 
        JiraActors[] a = w.getActors(); 
        String name = a.getName(); 

Он не находит GetName по какой-то причине. Я не знаю, почему.

ответ

1

Я понял.

я изменить setActors к

public void setActors(ArrayList<JiraActors> actors) { 
    this.actors = actors; 
} 

Тогда я был в состоянии получить список массива и получить доступ к методу GetName() из JiraActors.