我正在尝试从 Jira 获取一些 Actor 。包装器的代码在 Gson.fromJson 调用中使用。我使用了类似的 json 字符串,其中没有包含我需要的信息的数组,并且工作正常,所以问题似乎与数组有关,但我不是 100% 确定:
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 的格式。请注意,我没有放置完整的 json 响应。它只显示了两个 Actor 。
在我的代码中,我尝试了以下方法来检索 Actor :
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。我不知道为什么。
最佳答案
我明白了。
我将 setActors 更改为
public void setActors(ArrayList<JiraActors> actors) {
this.actors = actors;
}
然后我就能够获取数组列表并访问 JiraActors 的 getName() 方法。
关于java - gson 的 json 和包装器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37659612/