我是杰克逊的新手,我正在尝试从json响应中检索值。 这是我的json回复: -
{
total: "1",
count: "1",
params: {
res: "all",
detail: "summary",
smartCardId: "S1234567890",
receiverId: "r1234567890",
format: "all",
lang: "en",
storefrontType: "EN",
tcsMasterId: "41S7V"
},
baseUrl: {
asset: "http://10.84.90.186/content/video/",
poster: "http://10.84.90.186/content"
},
items: [
{
contentType: "ASSET",
endPointUrl: "/assets/41S7V",
showType: "MOVIE",
tcsMasterId: "41S7V",
title: "300: Rise of an Empire",
titleBrief: "300: Rise of an Empire",
summaryShort: "l ",
summaryMedium: "l ",
summaryLong: "l ",
year: "2014",
rating: "G",
runtime: "00:14:59",
displayRuntime: "14",
suggestedPrice: "5.99",
providerId: "www.mongrelmedia.com",
maximumViewingLength: "2880",
audioType: [
"Dolby Digital 5.1"
],
licensingWindowStart: "2015-01-01T00:00:00",
licensingWindowEnd: "2015-12-31T12:00:00",
genres: [
"Movies/Action and Adventure"
],
actors: [
" d"
],
actorsDisplay: "d",
reviewRating: {
type: "ROTTEN_TOMATOES",
criticSummaryCount: "55",
criticSummaryValue: "71",
criticSummaryRating: "3.0",
fanSummaryCount: "47103",
fanSummaryValue: "88",
fanSummaryRating: "4.0",
fanSummaryPreRelease: false,
reviews: [
{
reviewId: "1727471",
publicationId: "0",
publication: "Newsweek",
date: "2008-05-12",
freshnessScore: "null",
freshness: "rotten",
criticId: "0",
criticName: "David Ansen",
quote: "For all its ambition, the movie ends up using great historical events in the service of a dubious sentimentality."
},
{
reviewId: "1710100",
publicationId: "0",
publication: "Film4",
date: "2008-02-20",
freshnessScore: "4/5",
freshness: "fresh",
criticId: "0",
quote: "Unashamedly sentimental, this is a technically triumphant tear-jerker."
}
]
},
rightsIconDisplay: "IPT=1,DTH=0,WEB=0,NSC=1,MOB=0",
wishList: false,
preview: {
assetId: "41S8V21",
type: "PREVIEW",
contentPath: "www.mongrelmedia.com/41S8V21_a4289887-5f7c-47a4-afad-842c934025e1/MPL_41S8V21_a4289887-5f7c-47a4-afad-842c934025e1.m3u8",
masterPlaylist: "MPL_41S8V21_a4289887-5f7c-47a4-afad-842c934025e1.m3u8",
runtime: "00:14:59"
}
}
]
}
我正在尝试从以下位置检索值: - items: []
,例如displayRuntime: "14",
和genre
,但无法覆盖 -
这是主要的pojo类: -
public class AssetGen{
private BaseUrl baseUrl;
private String count;
private List items;
private Params params;
private String total;
public BaseUrl getBaseUrl(){
return this.baseUrl;
}
public void setBaseUrl(BaseUrl baseUrl){
this.baseUrl = baseUrl;
}
public String getCount(){
return this.count;
}
public void setCount(String count){
this.count = count;
}
public List getItems(){
return this.items;
}
public void setItems(List items){
this.items = items;
}
public Params getParams(){
return this.params;
}
public void setParams(Params params){
this.params = params;
}
public String getTotal(){
return this.total;
}
public void setTotal(String total){
this.total = total;
}
}
这里是item
pojo: -
public class Items{
private List actors;
private String actorsDisplay;
private List audioType;
private String contentType;
private String displayRuntime;
private String endPointUrl;
private List genres;
private String licensingWindowEnd;
private String licensingWindowStart;
private String maximumViewingLength;
private Preview preview;
private String providerId;
private String rating;
private ReviewRating reviewRating;
private String rightsIconDisplay;
private String runtime;
private String showType;
private String suggestedPrice;
private String summaryLong;
private String summaryMedium;
private String summaryShort;
private String tcsMasterId;
private String title;
private String titleBrief;
private boolean wishList;
private String year;
public List getActors(){
return this.actors;
}
public void setActors(List actors){
this.actors = actors;
}
public String getActorsDisplay(){
return this.actorsDisplay;
}
public void setActorsDisplay(String actorsDisplay){
this.actorsDisplay = actorsDisplay;
}
public List getAudioType(){
return this.audioType;
}
public void setAudioType(List audioType){
this.audioType = audioType;
}
public String getContentType(){
return this.contentType;
}
public void setContentType(String contentType){
this.contentType = contentType;
}
public String getDisplayRuntime(){
return this.displayRuntime;
}
public void setDisplayRuntime(String displayRuntime){
this.displayRuntime = displayRuntime;
}
public String getEndPointUrl(){
return this.endPointUrl;
}
public void setEndPointUrl(String endPointUrl){
this.endPointUrl = endPointUrl;
}
public List getGenres(){
return this.genres;
}
public void setGenres(List genres){
this.genres = genres;
}
public String getLicensingWindowEnd(){
return this.licensingWindowEnd;
}
public void setLicensingWindowEnd(String licensingWindowEnd){
this.licensingWindowEnd = licensingWindowEnd;
}
public String getLicensingWindowStart(){
return this.licensingWindowStart;
}
public void setLicensingWindowStart(String licensingWindowStart){
this.licensingWindowStart = licensingWindowStart;
}
public String getMaximumViewingLength(){
return this.maximumViewingLength;
}
public void setMaximumViewingLength(String maximumViewingLength){
this.maximumViewingLength = maximumViewingLength;
}
public Preview getPreview(){
return this.preview;
}
public void setPreview(Preview preview){
this.preview = preview;
}
public String getProviderId(){
return this.providerId;
}
public void setProviderId(String providerId){
this.providerId = providerId;
}
public String getRating(){
return this.rating;
}
public void setRating(String rating){
this.rating = rating;
}
public ReviewRating getReviewRating(){
return this.reviewRating;
}
public void setReviewRating(ReviewRating reviewRating){
this.reviewRating = reviewRating;
}
public String getRightsIconDisplay(){
return this.rightsIconDisplay;
}
public void setRightsIconDisplay(String rightsIconDisplay){
this.rightsIconDisplay = rightsIconDisplay;
}
public String getRuntime(){
return this.runtime;
}
public void setRuntime(String runtime){
this.runtime = runtime;
}
public String getShowType(){
return this.showType;
}
public void setShowType(String showType){
this.showType = showType;
}
public String getSuggestedPrice(){
return this.suggestedPrice;
}
public void setSuggestedPrice(String suggestedPrice){
this.suggestedPrice = suggestedPrice;
}
public String getSummaryLong(){
return this.summaryLong;
}
public void setSummaryLong(String summaryLong){
this.summaryLong = summaryLong;
}
public String getSummaryMedium(){
return this.summaryMedium;
}
public void setSummaryMedium(String summaryMedium){
this.summaryMedium = summaryMedium;
}
public String getSummaryShort(){
return this.summaryShort;
}
public void setSummaryShort(String summaryShort){
this.summaryShort = summaryShort;
}
public String getTcsMasterId(){
return this.tcsMasterId;
}
public void setTcsMasterId(String tcsMasterId){
this.tcsMasterId = tcsMasterId;
}
public String getTitle(){
return this.title;
}
public void setTitle(String title){
this.title = title;
}
public String getTitleBrief(){
return this.titleBrief;
}
public void setTitleBrief(String titleBrief){
this.titleBrief = titleBrief;
}
public boolean getWishList(){
return this.wishList;
}
public void setWishList(boolean wishList){
this.wishList = wishList;
}
public String getYear(){
return this.year;
}
public void setYear(String year){
this.year = year;
}
}
这是我尝试使用的杰克逊代码: -
@SuppressWarnings("rawtypes")
public String[] getShowNWdetailsGopherParser (String url) throws JsonParseException, JsonMappingException, IOException{
System.err.println("STAGE 1");
URL jsonUrl = new URL(url);
ObjectMapper objmapper = new ObjectMapper();
objmapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
List<AssetGen> jsongenShow_1 = objmapper.readValue(jsonUrl, new TypeReference <List<AssetGen>>() {});
List [] shows = new List [jsongenShow_1.size()];
String[] showsArr = new String[jsongenShow_1.size()];
int i = 0;
for(AssetGen element : jsongenShow_1){
shows[i]=element.getItems().
showsArr[i]=shows[i].toString();
i++;
}
return showsArr;
}
需要明确的解决方案,杰克逊真的很新。
答案 0 :(得分:0)
Items是一个数组。
如果您将POJO从Items
重命名为Item
,我认为会更清楚。
因此,为了在单个项目中获得价值,它应该是这样的:
for(AssetGen element : jsongenShow_1){
List<Item> items=element.getItems();
for (Item item:items) {
//get item value
item.getRuntime();
....
}
}
答案 1 :(得分:0)
这些是我在主要POJO课程中所做的更改:
public List<Items> getItems(){
return this.items;
}
public void setItems(List<Items> items){
this.items = items;
}
我使用下面给出的jackson函数从Item中检索值: -
public String getDisplayRuntimer (String url) throws JsonParseException, JsonMappingException, IOException{
String hello = null;
URL jsonUrl = new URL(url);
ObjectMapper objmapper = new ObjectMapper();
objmapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
AssetGen jsongenShow_1 = objmapper.readValue(jsonUrl, AssetGen.class);
hello = jsongenShow_1.getItems().get(0).getDisplayRuntime();
return hello;
}