- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
全部,我有以下 JSON
输出/字符串(它是来自 JIRA API 的响应):
{
"expand": "names,schema",
"startAt": 0,
"maxResults": 50,
"total": 1,
"issues": [
{
"expand": "operations,versionedRepresentations,editmeta,changelog,transitions,renderedFields",
"id": "18200",
"self": "https://localhost/rest/api/2/issue/18200",
"key": "LS-1111",
"fields": {
"issuetype": {
"self": "https://localhost/rest/api/2/issuetype/3",
"id": "3",
"description": "A task that needs to be done.",
"iconUrl": "https://localhost/secure/viewavatar?size=xsmall&avatarId=10318&avatarType=issuetype",
"name": "Task",
"subtask": false,
"avatarId": 10318
},
"timespent": 21600,
"aggregatetimespent": 25200,
"resolution": null,
"customfield_11201": null,
"project": {
"self": "https://localhost/rest/api/2/project/10100",
"id": "10100",
"key": "PROJKEY",
"name": "ProjectABCD",
"avatarUrls": {
"48x48": "https://localhost/secure/projectavatar?pid=10100&avatarId=10600",
"24x24": "https://localhost/secure/projectavatar?size=small&pid=10100&avatarId=10600",
"16x16": "https://localhost/secure/projectavatar?size=xsmall&pid=10100&avatarId=10600",
"32x32": "https://localhost/secure/projectavatar?size=medium&pid=10100&avatarId=10600"
}
},
"issuelinks": [
{
"id": "16202",
"self": "https://localhost/rest/api/2/issueLink/16202",
"type": {
"id": "10003",
"name": "Relates",
"inward": "relates to",
"outward": "relates to",
"self": "https://localhost/rest/api/2/issueLinkType/10003"
}
}
]
}
}
]
}
我正在使用 GSON
遍历元素并获取值。我已经按照
POJO
类
http://www.javacreed.com/gson-deserialiser-example/
我能够获取到第 2 级的元素值。例如:我能够获得 response.expand
、response.issues.get(0).expand
的值和其他值直到这个级别。如何获取 response.issues.get(0).fields.issuetype.id
的值?
我应该如何构建反序列化器和 POJO
类。请协助。谢谢。
最佳答案
试试这个-
AvatarUrls.java
public class AvatarUrls {
private String _48x48;
private String _24x24;
private String _16x16;
private String _32x32;
public String get_48x48() {
return _48x48;
}
public void set_48x48(String _48x48) {
this._48x48 = _48x48;
}
public String get_24x24() {
return _24x24;
}
public void set_24x24(String _24x24) {
this._24x24 = _24x24;
}
public String get_16x16() {
return _16x16;
}
public void set_16x16(String _16x16) {
this._16x16 = _16x16;
}
public String get_32x32() {
return _32x32;
}
public void set_32x32(String _32x32) {
this._32x32 = _32x32;
}
@Override
public String toString() {
return "AvatarUrls [_48x48=" + _48x48 + ", _24x24=" + _24x24
+ ", _16x16=" + _16x16 + ", _32x32=" + _32x32 + "]";
}
}
Example.java
import java.util.ArrayList;
import java.util.List;
public class Example {
private String expand;
private Integer startAt;
private Integer maxResults;
private Integer total;
private List<Issue> issues = new ArrayList<Issue>();
public String getExpand() {
return expand;
}
public void setExpand(String expand) {
this.expand = expand;
}
public Integer getStartAt() {
return startAt;
}
public void setStartAt(Integer startAt) {
this.startAt = startAt;
}
public Integer getMaxResults() {
return maxResults;
}
public void setMaxResults(Integer maxResults) {
this.maxResults = maxResults;
}
public Integer getTotal() {
return total;
}
public void setTotal(Integer total) {
this.total = total;
}
public List<Issue> getIssues() {
return issues;
}
public void setIssues(List<Issue> issues) {
this.issues = issues;
}
@Override
public String toString() {
return "Example [expand=" + expand + ", startAt=" + startAt
+ ", maxResults=" + maxResults + ", total=" + total
+ ", issues=" + issues + "]";
}
}
Fields.java
import java.util.ArrayList;
import java.util.List;
public class Fields {
private Issuetype issuetype;
private Integer timespent;
private Integer aggregatetimespent;
private Object resolution;
private Object customfield11201;
private Project project;
private List<Issuelink> issuelinks = new ArrayList<Issuelink>();
public Issuetype getIssuetype() {
return issuetype;
}
public void setIssuetype(Issuetype issuetype) {
this.issuetype = issuetype;
}
public Integer getTimespent() {
return timespent;
}
public void setTimespent(Integer timespent) {
this.timespent = timespent;
}
public Integer getAggregatetimespent() {
return aggregatetimespent;
}
public void setAggregatetimespent(Integer aggregatetimespent) {
this.aggregatetimespent = aggregatetimespent;
}
public Object getResolution() {
return resolution;
}
public void setResolution(Object resolution) {
this.resolution = resolution;
}
public Object getCustomfield11201() {
return customfield11201;
}
public void setCustomfield11201(Object customfield11201) {
this.customfield11201 = customfield11201;
}
public Project getProject() {
return project;
}
public void setProject(Project project) {
this.project = project;
}
public List<Issuelink> getIssuelinks() {
return issuelinks;
}
public void setIssuelinks(List<Issuelink> issuelinks) {
this.issuelinks = issuelinks;
}
@Override
public String toString() {
return "Fields [issuetype=" + issuetype + ", timespent=" + timespent
+ ", aggregatetimespent=" + aggregatetimespent
+ ", resolution=" + resolution + ", customfield11201="
+ customfield11201 + ", project=" + project + ", issuelinks="
+ issuelinks + "]";
}
}
问题.java
public class Issue {
private String expand;
private String id;
private String self;
private String key;
private Fields fields;
public String getExpand() {
return expand;
}
public void setExpand(String expand) {
this.expand = expand;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getSelf() {
return self;
}
public void setSelf(String self) {
this.self = self;
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public Fields getFields() {
return fields;
}
public void setFields(Fields fields) {
this.fields = fields;
}
@Override
public String toString() {
return "Issue [expand=" + expand + ", id=" + id + ", self=" + self
+ ", key=" + key + ", fields=" + fields + "]";
}
}
Issuelink.java
public class Issuelink {
private String id;
private String self;
private Type type;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getSelf() {
return self;
}
public void setSelf(String self) {
this.self = self;
}
public Type getType() {
return type;
}
public void setType(Type type) {
this.type = type;
}
@Override
public String toString() {
return "Issuelink [id=" + id + ", self=" + self + ", type=" + type
+ "]";
}
}
问题类型.java
public class Issuetype {
private String self;
private String id;
private String description;
private String iconUrl;
private String name;
private Boolean subtask;
private Integer avatarId;
public String getSelf() {
return self;
}
public void setSelf(String self) {
this.self = self;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getIconUrl() {
return iconUrl;
}
public void setIconUrl(String iconUrl) {
this.iconUrl = iconUrl;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Boolean getSubtask() {
return subtask;
}
public void setSubtask(Boolean subtask) {
this.subtask = subtask;
}
public Integer getAvatarId() {
return avatarId;
}
public void setAvatarId(Integer avatarId) {
this.avatarId = avatarId;
}
@Override
public String toString() {
return "Issuetype [self=" + self + ", id=" + id + ", description="
+ description + ", iconUrl=" + iconUrl + ", name=" + name
+ ", subtask=" + subtask + ", avatarId=" + avatarId + "]";
}
}
Project.java
public class Project {
private String self;
private String id;
private String key;
private String name;
private AvatarUrls avatarUrls;
public String getSelf() {
return self;
}
public void setSelf(String self) {
this.self = self;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public AvatarUrls getAvatarUrls() {
return avatarUrls;
}
public void setAvatarUrls(AvatarUrls avatarUrls) {
this.avatarUrls = avatarUrls;
}
@Override
public String toString() {
return "Project [self=" + self + ", id=" + id + ", key=" + key
+ ", name=" + name + ", avatarUrls=" + avatarUrls + "]";
}
}
Type.java
public class Type {
private String id;
private String name;
private String inward;
private String outward;
private String self;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getInward() {
return inward;
}
public void setInward(String inward) {
this.inward = inward;
}
public String getOutward() {
return outward;
}
public void setOutward(String outward) {
this.outward = outward;
}
public String getSelf() {
return self;
}
public void setSelf(String self) {
this.self = self;
}
@Override
public String toString() {
return "Type [id=" + id + ", name=" + name + ", inward=" + inward
+ ", outward=" + outward + ", self=" + self + "]";
}
}
现在你可以测试它了——
主.java
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.testgson.beans.Example;
public class Main {
private static Gson gson;
static {
gson = new GsonBuilder().create();
}
/**
* @param args
*/
public static void main(String[] args) {
String j = "{\"expand\":\"names,schema\",\"startAt\":0,\"maxResults\":50,\"total\":1,\"issues\":[{\"expand\":\"operations,versionedRepresentations,editmeta,changelog,transitions,renderedFields\",\"id\":\"18200\",\"self\":\"https://localhost/rest/api/2/issue/18200\",\"key\":\"LS-1111\",\"fields\":{\"issuetype\":{\"self\":\"https://localhost/rest/api/2/issuetype/3\",\"id\":\"3\",\"description\":\"A task that needs to be done.\",\"iconUrl\":\"https://localhost/secure/viewavatar?size=xsmall&avatarId=10318&avatarType=issuetype\",\"name\":\"Task\",\"subtask\":false,\"avatarId\":10318},\"timespent\":21600,\"aggregatetimespent\":25200,\"resolution\":null,\"customfield_11201\":null,\"project\":{\"self\":\"https://localhost/rest/api/2/project/10100\",\"id\":\"10100\",\"key\":\"PROJKEY\",\"name\":\"ProjectABCD\",\"avatarUrls\":{\"48x48\":\"https://localhost/secure/projectavatar?pid=10100&avatarId=10600\",\"24x24\":\"https://localhost/secure/projectavatar?size=small&pid=10100&avatarId=10600\",\"16x16\":\"https://localhost/secure/projectavatar?size=xsmall&pid=10100&avatarId=10600\",\"32x32\":\"https://localhost/secure/projectavatar?size=medium&pid=10100&avatarId=10600\"}},\"issuelinks\":[{\"id\":\"16202\",\"self\":\"https://localhost/rest/api/2/issueLink/16202\",\"type\":{\"id\":\"10003\",\"name\":\"Relates\",\"inward\":\"relates to\",\"outward\":\"relates to\",\"self\":\"https://localhost/rest/api/2/issueLinkType/10003\"}}]}}]}";
Example r = gson.fromJson(j, Example.class);
System.out.println(r);
// This is how traversal can be done
List<Issue> issues = r.getIssues();
for(Issue i: issues) {
System.out.println("Expand - " + i.getExpand());
System.out.println("Id - " + i.getId());
System.out.println("Self - " + i.getSelf());
System.out.println("Key - " + i.getKey());
System.out.println("Fields - " + i.getFields());
}
}
}
结果是-
Example [expand=names,schema, startAt=0, maxResults=50, total=1, issues=[Issue [expand=operations,versionedRepresentations,editmeta,changelog,transitions,renderedFields, id=18200, self=https://localhost/rest/api/2/issue/18200, key=LS-1111, fields=Fields [issuetype=Issuetype [self=https://localhost/rest/api/2/issuetype/3, id=3, description=A task that needs to be done., iconUrl=https://localhost/secure/viewavatar?size=xsmall&avatarId=10318&avatarType=issuetype, name=Task, subtask=false, avatarId=10318], timespent=21600, aggregatetimespent=25200, resolution=null, customfield11201=null, project=Project [self=https://localhost/rest/api/2/project/10100, id=10100, key=PROJKEY, name=ProjectABCD, avatarUrls=AvatarUrls [_48x48=null, _24x24=null, _16x16=null, _32x32=null]], issuelinks=[Issuelink [id=16202, self=https://localhost/rest/api/2/issueLink/16202, type=Type [id=10003, name=Relates, inward=relates to, outward=relates to, self=https://localhost/rest/api/2/issueLinkType/10003]]]]]]]
关于java - 使用 GSON 反序列化嵌套的 JSON 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33007600/
我在网上搜索但没有找到任何合适的文章解释如何使用 javascript 使用 WCF 服务,尤其是 WebScriptEndpoint。 任何人都可以对此给出任何指导吗? 谢谢 最佳答案 这是一篇关于
我正在编写一个将运行 Linux 命令的 C 程序,例如: cat/etc/passwd | grep 列表 |剪切-c 1-5 我没有任何结果 *这里 parent 等待第一个 child (chi
所以我正在尝试处理文件上传,然后将该文件作为二进制文件存储到数据库中。在我存储它之后,我尝试在给定的 URL 上提供文件。我似乎找不到适合这里的方法。我需要使用数据库,因为我使用 Google 应用引
我正在尝试制作一个宏,将下面的公式添加到单元格中,然后将其拖到整个列中并在 H 列中复制相同的公式 我想在 F 和 H 列中输入公式的数据 Range("F1").formula = "=IF(ISE
问题类似于this one ,但我想使用 OperatorPrecedenceParser 解析带有函数应用程序的表达式在 FParsec . 这是我的 AST: type Expression =
我想通过使用 sequelize 和 node.js 将这个查询更改为代码取决于在哪里 select COUNT(gender) as genderCount from customers where
我正在使用GNU bash,版本5.0.3(1)-发行版(x86_64-pc-linux-gnu),我想知道为什么简单的赋值语句会出现语法错误: #/bin/bash var1=/tmp
这里,为什么我的代码在 IE 中不起作用。我的代码适用于所有浏览器。没有问题。但是当我在 IE 上运行我的项目时,它发现错误。 而且我的 jquery 类和 insertadjacentHTMl 也不
我正在尝试更改标签的innerHTML。我无权访问该表单,因此无法编辑 HTML。标签具有的唯一标识符是“for”属性。 这是输入和标签的结构:
我有一个页面,我可以在其中返回用户帖子,可以使用一些 jquery 代码对这些帖子进行即时评论,在发布新评论后,我在帖子下插入新评论以及删除 按钮。问题是 Delete 按钮在新插入的元素上不起作用,
我有一个大约有 20 列的“管道分隔”文件。我只想使用 sha1sum 散列第一列,它是一个数字,如帐号,并按原样返回其余列。 使用 awk 或 sed 执行此操作的最佳方法是什么? Accounti
我需要将以下内容插入到我的表中...我的用户表有五列 id、用户名、密码、名称、条目。 (我还没有提交任何东西到条目中,我稍后会使用 php 来做)但由于某种原因我不断收到这个错误:#1054 - U
所以我试图有一个输入字段,我可以在其中输入任何字符,但然后将输入的值小写,删除任何非字母数字字符,留下“。”而不是空格。 例如,如果我输入: 地球的 70% 是水,-!*#$^^ & 30% 土地 输
我正在尝试做一些我认为非常简单的事情,但出于某种原因我没有得到想要的结果?我是 javascript 的新手,但对 java 有经验,所以我相信我没有使用某种正确的规则。 这是一个获取输入值、检查选择
我想使用 angularjs 从 mysql 数据库加载数据。 这就是应用程序的工作原理;用户登录,他们的用户名存储在 cookie 中。该用户名显示在主页上 我想获取这个值并通过 angularjs
我正在使用 autoLayout,我想在 UITableViewCell 上放置一个 UIlabel,它应该始终位于单元格的右侧和右侧的中心。 这就是我想要实现的目标 所以在这里你可以看到我正在谈论的
我需要与 MySql 等效的 elasticsearch 查询。我的 sql 查询: SELECT DISTINCT t.product_id AS id FROM tbl_sup_price t
我正在实现代码以使用 JSON。 func setup() { if let flickrURL = NSURL(string: "https://api.flickr.com/
我尝试使用for循环声明变量,然后测试cols和rols是否相同。如果是,它将运行递归函数。但是,我在 javascript 中执行 do 时遇到问题。有人可以帮忙吗? 现在,在比较 col.1 和
我举了一个我正在处理的问题的简短示例。 HTML代码: 1 2 3 CSS 代码: .BB a:hover{ color: #000; } .BB > li:after {
我是一名优秀的程序员,十分优秀!