我知道这个问题经常被提出来,但到目前为止我并没有真正找到帮助我解决问题的答案(我试过了一些问题)。
基本上我从这个API http://api.tvmaze.com/singlesearch/shows?q=izombie&embed=episodes获得了一个JSON-Response,嵌套对象中有很多嵌套对象。例如,使用JSON在线查看器查看它可以得到以下输出: 对我来说有趣的是底部。更具体的是“剧集”对象。到目前为止,我可以从JSON-Array(id,url,name,type,...)中提取基本信息,但无法获得“triple(_embedded> episodes> ...)”嵌套对象。
解析JSON-Response的代码:
public void parseJSON(String jsonResponse) throws IOException {
GsonBuilder builder = new GsonBuilder();
Gson gson = builder.create();
Show show = gson.fromJson(jsonResponse, Show.class);
System.out.println(show.getID() + "\n" + show.getName() + "\n" + show.getStatus());
}
Show类:
public class Show {
private int id;
private String name;
private String status;
public int getID() {
return id;
}
public String getName() {
return name;
}
public String getStatus() {
return status;
}
}
那么如何从剧集数组中获取从0到结尾的所有信息?非常感谢任何帮助!
旁注:我正在使用名为“readUrl”的方法获取jsonResponse,但它现在几乎无关紧要。
答案 0 :(得分:1)
GSON处理嵌入式对象就好了。假设您有一个嵌入了Bar的Foo类,您只需要
capture program drop Wilcoxon3
program define Wilcoxon3, eclass
version 13
syntax varlist [if] [in], by(varname)
marksample touse
local names
foreach v of varlist `varlist' {
ranksum `v' if `touse', by(`by')
matrix b = nullmat(b), 1
matrix p = nullmat(p), 2*normprob(-abs(r(z)))
local names `names' "`v'"
}
matrix colnames p = `names'
// store results
ereturn post b
ereturn matrix p
end
sysuse auto, clear
eststo clear
/* store means and t-tests */
estpost summarize price weight if !foreign
eststo
estpost summarize price weight if foreign
eststo
estpost ttest price weight, by(foreign)
eststo
/* /1* try to store rank-sum test *1/ */
/* Wilcoxon3 price weight, by(foreign) */
/* eststo */
/* table of means and t-tests */
esttab, cells("mean(pattern(1 0 0) fmt(3) label(!Foreign)) mean(pattern(0 1 0) fmt(3) label(Foreign)) p(star pattern(0 0 1) fmt(3) label(p))")
/* /1* try table of means, t-tests, and rank-sum tests *1/ */
/* esttab, cells("mean(pattern(1 0 0 0) fmt(3) label(!Foreign)) mean(pattern(0 1 0 0) fmt(3) label(Foreign)) p(star pattern(0 0 1 0) fmt(3) label(p)) p(star pattern(0 0 0 1) fmt(3) label(p))") */
它会为你解析吧。这是递归的。如果需要数组,请使用class Foo {
public Bar bar;
}
,它将解析数组。