我是一个春天的新手.编写非常简单的代码,从http://api.engin.umich.edu/hostinfo/...PONT&room=B505的API调用中获取JSON对象数组
只获取"名称:NULL"
import org.springframework.web.client.RestTemplate;
public class Application {
public static void main(String args[]) {
RestTemplate restTemplate = new RestTemplate();
Computer[] computer = restTemplate.getForObject("http://api.engin.umich.edu/hostinfo/v1/computers.json?building=PIERPONT&room=B505", Computer[].class);
System.out.println("Name: " + computer[0].getName());
}
}
Run Code Online (Sandbox Code Playgroud)
这是简单的计算机课程.
package hello;
import org.codehaus.jackson.annotate.JsonIgnoreProperties;
@JsonIgnoreProperties(ignoreUnknown = true)
public class Computer {
private String hostname;
public String getName() {
return hostname;
}
public String toString() {
return "Computer [hostname=" + hostname + "]";
}
}
Run Code Online (Sandbox Code Playgroud)
Osc*_*car 24
一些观察:
如果你不太了解Spring
framework
,那没关系.为了serialize/deserialize
JSON
可以在许多方面进行.
我看起来你JSON
包含了一些reserved
像class
或的词string
.为了处理这个问题,你需要使用@JsonProperty
注释(稍后你会看到它Computer.java
和其他人).我还使用了这个注释,但没有声明variables
你的JSON
属性中包含下划线(请记住你DTO's
[beans]
必须具有相同的structure
,datatypes
并且也使用相同的JSON
属性名称).
解决有关您的问题RestTemplate
object
(我不确定您使用时是否采用正确的方式Computer[].class
).作为建议,请考虑关注/检查此code
代码段:https://stackoverflow.com/a/6349488/1178686
DTO's
[beans]
:Computer.java
,Load.java
,Location.java
和测试class
:JSONParse.java
.请查看代码!Computer.java
package com.example.dto;
import java.util.List;
import javax.xml.bind.annotation.XmlRootElement;
import org.codehaus.jackson.annotate.JsonProperty;
@XmlRootElement
public class Computer {
private String hostname;
private String vendor;
private String model;
private int swap;
private int memory;
@JsonProperty("sess_count")
private int sessCount;
private List<Load> load;
@JsonProperty("in_use")
private boolean inUse;
@JsonProperty("free_in_tmp")
private int freeInTmp;
@JsonProperty("class")
private String clazz;
private List<Location> location;
@JsonProperty("last_access")
private String lastAccess;
@JsonProperty("last_report")
private int lastReport;
private String ip;
public String getHostname() {
return hostname;
}
public void setHostname(String hostname) {
this.hostname = hostname;
}
public String getVendor() {
return vendor;
}
public void setVendor(String vendor) {
this.vendor = vendor;
}
public String getModel() {
return model;
}
public void setModel(String model) {
this.model = model;
}
public int getSwap() {
return swap;
}
public void setSwap(int swap) {
this.swap = swap;
}
public int getMemory() {
return memory;
}
public void setMemory(int memory) {
this.memory = memory;
}
public int getSessCount() {
return sessCount;
}
public void setSessCount(int sessCount) {
this.sessCount = sessCount;
}
public List<Load> getLoad() {
return load;
}
public void setLoad(List<Load> load) {
this.load = load;
}
public boolean isInUse() {
return inUse;
}
public void setInUse(boolean inUse) {
this.inUse = inUse;
}
public int getFreeInTmp() {
return freeInTmp;
}
public void setFreeInTmp(int freeInTmp) {
this.freeInTmp = freeInTmp;
}
public String getClazz() {
return clazz;
}
public void setClazz(String clazz) {
this.clazz = clazz;
}
public List<Location> getLocation() {
return location;
}
public void setLocation(List<Location> location) {
this.location = location;
}
public String getLastAccess() {
return lastAccess;
}
public void setLastAccess(String lastAccess) {
this.lastAccess = lastAccess;
}
public int getLastReport() {
return lastReport;
}
public void setLastReport(int lastReport) {
this.lastReport = lastReport;
}
public String getIp() {
return ip;
}
public void setIp(String ip) {
this.ip = ip;
}
@Override
public String toString() {
String str = "=================================\r\n";
str += "Hostname: " + hostname + "\r\n" +
"Vendor: " + vendor + "\r\n" +
"Model: " + model + "\r\n" +
"Swap: " + swap + "\r\n" +
"Memory: " + memory + "\r\n" +
"Sess_Count: " + sessCount + "\r\n" +
"Load: " + "\r\n";
for(Load ld : load) {
str += "\t" + "One: " + ld.getOne() + "\r\n";
str += "\t" + "Five: " + ld.getFive() + "\r\n";
str += "\t" + "Fifteen: " + ld.getFifteen() + "\r\n";
}
str += "In_Use: " + inUse + "\r\n" +
"Free_In_Tmp: " + freeInTmp + "\r\n" +
"Class: " + clazz + "\r\n" +
"Location: " + "\r\n";
for(Location lc : location) {
str += "\t" + "Building: " + lc.getBuilding() + "\r\n";
str += "\t" + "Computers: " + lc.getComputers() + "\r\n";
str += "\t" + "Room: " + lc.getRoom() + "\r\n";
str += "\t" + "String: " + lc.getStr() + "\r\n";
}
str += "Ip: " + ip + "\r\n";
str += "Last_Access: " + lastAccess + "\r\n";
str += "Last_Report: " + lastReport + "\r\n";
return str;
}
}
Run Code Online (Sandbox Code Playgroud)
Load.java
package com.example.dto;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class Load {
private int one;
private int five;
private int fifteen;
public int getOne() {
return one;
}
public void setOne(int one) {
this.one = one;
}
public int getFive() {
return five;
}
public void setFive(int five) {
this.five = five;
}
public int getFifteen() {
return fifteen;
}
public void setFifteen(int fifteen) {
this.fifteen = fifteen;
}
}
Run Code Online (Sandbox Code Playgroud)
Location.java
package com.example.dto;
import javax.xml.bind.annotation.XmlRootElement;
import org.codehaus.jackson.annotate.JsonProperty;
@XmlRootElement
public class Location {
private String room;
private String building;
private String computers;
@JsonProperty("string")
private String str;
public String getRoom() {
return room;
}
public void setRoom(String room) {
this.room = room;
}
public String getBuilding() {
return building;
}
public void setBuilding(String building) {
this.building = building;
}
public String getComputers() {
return computers;
}
public void setComputers(String computers) {
this.computers = computers;
}
public String getStr() {
return str;
}
public void setStr(String str) {
this.str = str;
}
}
Run Code Online (Sandbox Code Playgroud)
JSONParse.java:runnable class
仅用于测试目的.
package com.example.main;
import java.io.IOException;
import java.net.URL;
import java.util.List;
import org.codehaus.jackson.JsonParseException;
import org.codehaus.jackson.map.DeserializationConfig.Feature;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.type.TypeReference;
import com.example.dto.Computer;
public class JSONParse {
public static void main(String args[]) throws JsonParseException, JsonMappingException, IOException {
/* JSON provider */
URL url = new URL("http://api.engin.umich.edu/hostinfo/v1/computers.json?building=PIERPONT&room=B505");
ObjectMapper mapper = new ObjectMapper();
/*
* This allows the ObjectMapper to accept single values for a collection.
* For example: "location" property in the returned JSON is a collection that
* can accept multiple objects but, in deserialization process, this property just
* have one object and causes an Exception.
*/
mapper.configure(Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);
/*
* If some JSON property is not present, avoid exceptions setting
* FAIL_ON_UNKNOWN_PROPERTIES to false
*/
mapper.configure(Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
/* Get all computers */
List<Computer> computers = mapper.readValue(url, new TypeReference<List<Computer>>(){});
/* Print each computer (previously overriding "toString()" method) */
for(Computer computer : computers) {
System.out.println(computer.toString());
}
}
}
Run Code Online (Sandbox Code Playgroud)
以上输出class
:
Run Code Online (Sandbox Code Playgroud)================================= Hostname: pierb505p13.engin.umich.edu Vendor: Linux Model: Dell 980 Swap: 8126456 Memory: 7797 Sess_Count: 0 Load: One: 0 Five: 0 Fifteen: 0 In_Use: false Free_In_Tmp: 9608460 Class: L Location: Building: PIERPONT Computers: 26 Room: B505 String: B505 PIERPONT Ip: 141.213.54.23 Last_Access: Last_Report: 1383202078 ================================= Hostname: pierb505p22.engin.umich.edu Vendor: Linux Model: Dell 980 Swap: 8126456 Memory: 7797 Sess_Count: 0 Load: One: 0 Five: 0 Fifteen: 0 In_Use: false Free_In_Tmp: 9609244 Class: L Location: Building: PIERPONT Computers: 26 Room: B505 String: B505 PIERPONT Ip: 141.213.54.32 Last_Access: Last_Report: 1383201987 ================================= Hostname: pierb505p06.engin.umich.edu Vendor: Linux Model: Dell 980 Swap: 8126456 Memory: 7797 Sess_Count: 0 Load: One: 0 Five: 0 Fifteen: 0 In_Use: false Free_In_Tmp: 9606464 Class: L Location: Building: PIERPONT Computers: 26 Room: B505 String: B505 PIERPONT Ip: 141.213.54.16 Last_Access: Last_Report: 1383201982 ================================= Hostname: pierb505p17.engin.umich.edu Vendor: Linux Model: Dell 980 Swap: 8126456 Memory: 7797 Sess_Count: 0 Load: One: 0 Five: 0 Fifteen: 0 In_Use: false Free_In_Tmp: 9606820 Class: L Location: Building: PIERPONT Computers: 26 Room: B505 String: B505 PIERPONT Ip: 141.213.54.27 Last_Access: Last_Report: 1383202064 ================================= Hostname: pierb505p15.engin.umich.edu Vendor: Linux Model: Dell 980 Swap: 8126456 Memory: 7797 Sess_Count: 0 Load: One: 0 Five: 0 Fifteen: 0 In_Use: false Free_In_Tmp: 9609052 Class: L Location: Building: PIERPONT Computers: 26 Room: B505 String: B505 PIERPONT Ip: 141.213.54.25 Last_Access: Last_Report: 1383202052 ================================= Hostname: pierb505p12.engin.umich.edu Vendor: Linux Model: Dell 980 Swap: 8126456 Memory: 7797 Sess_Count: 0 Load: One: 0 Five: 0 Fifteen: 0 In_Use: false Free_In_Tmp: 9607136 Class: L Location: Building: PIERPONT Computers: 26 Room: B505 String: B505 PIERPONT Ip: 141.213.54.22 Last_Access: Last_Report: 1383202037 ================================= Hostname: pierb505p03.engin.umich.edu Vendor: Linux Model: Dell 980 Swap: 8126456 Memory: 7797 Sess_Count: 0 Load: One: 0 Five: 0 Fifteen: 0 In_Use: false Free_In_Tmp: 9603132 Class: L Location: Building: PIERPONT Computers: 26 Room: B505 String: B505 PIERPONT Ip: 141.213.54.13 Last_Access: Last_Report: 1383201964 ================================= Hostname: pierb505p14.engin.umich.edu Vendor: Linux Model: Dell 980 Swap: 8126456 Memory: 7797 Sess_Count: 0 Load: One: 0 Five: 0 Fifteen: 0 In_Use: false Free_In_Tmp: 9599592 Class: L Location: Building: PIERPONT Computers: 26 Room: B505 String: B505 PIERPONT Ip: 141.213.54.24 Last_Access: Last_Report: 1383201996 ================================= Hostname: pierb505p07.engin.umich.edu Vendor: Linux Model: Dell 980 Swap: 8126456 Memory: 7797 Sess_Count: 0 Load: One: 0 Five: 0 Fifteen: 0 In_Use: false Free_In_Tmp: 9608176 Class: L Location: Building: PIERPONT Computers: 26 Room: B505 String: B505 PIERPONT Ip: 141.213.54.17 Last_Access: Last_Report: 1383202127 ================================= Hostname: pierb505p23.engin.umich.edu Vendor: Linux Model: Dell 980 Swap: 8126456 Memory: 7797 Sess_Count: 0 Load: One: 1 Five: 0 Fifteen: 0 In_Use: false Free_In_Tmp: 9600968 Class: L Location: Building: PIERPONT Computers: 26 Room: B505 String: B505 PIERPONT Ip: 141.213.54.33 Last_Access: Last_Report: 1383202013 ================================= Hostname: pierb505p11.engin.umich.edu Vendor: Linux Model: Dell 980 Swap: 8126456 Memory: 7797 Sess_Count: 0 Load: One: 1 Five: 0 Fifteen: 0 In_Use: false Free_In_Tmp: 9607224 Class: L Location: Building: PIERPONT Computers: 26 Room: B505 String: B505 PIERPONT Ip: 141.213.54.21 Last_Access: Last_Report: 1383202098 ================================= Hostname: pierb505p21.engin.umich.edu Vendor: Linux Model: Dell 980 Swap: 8126456 Memory: 7797 Sess_Count: 0 Load: One: 1 Five: 0 Fifteen: 0 In_Use: false Free_In_Tmp: 9595136 Class: L Location: Building: PIERPONT Computers: 26 Room: B505 String: B505 PIERPONT Ip: 141.213.54.31 Last_Access: Last_Report: 1383202035 ================================= Hostname: pierb505p16.engin.umich.edu Vendor: Linux Model: Dell 980 Swap: 8126456 Memory: 7797 Sess_Count: 0 Load: One: 1 Five: 0 Fifteen: 0 In_Use: false Free_In_Tmp: 9601212 Class: L Location: Building: PIERPONT Computers: 26 Room: B505 String: B505 PIERPONT Ip: 141.213.54.26 Last_Access: Last_Report: 1383202106 ================================= Hostname: pierb505p04.engin.umich.edu Vendor: Linux Model: Dell 980 Swap: 8126456 Memory: 7797 Sess_Count: 0 Load: One: 1 Five: 0 Fifteen: 0 In_Use: false Free_In_Tmp: 9603220 Class: L Location: Building: PIERPONT Computers: 26 Room: B505 String: B505 PIERPONT Ip: 141.213.54.14 Last_Access: Last_Report: 1383202135 ================================= Hostname: pierb505p08.engin.umich.edu Vendor: Windows Model: OptiPlex 980 Swap: 0 Memory: 0 Sess_Count: 0 Load: One: 1 Five: 5 Fifteen: 15 In_Use: false Free_In_Tmp: 16024588 Class: L Location: Building: PIERPONT Computers: 26 Room: B505 String: B505 PIERPONT Ip: 141.213.54.18 Last_Access: Last_Report: 1383202133 ================================= Hostname: pierb505p25.engin.umich.edu Vendor: Windows Model: OptiPlex 980 Swap: 0 Memory: 0 Sess_Count: 0 Load: One: 1 Five: 5 Fifteen: 15 In_Use: false Free_In_Tmp: 10299356 Class: L Location: Building: PIERPONT Computers: 26 Room: B505 String: B505 PIERPONT Ip: 141.213.54.35 Last_Access: Last_Report: 1383202100 ================================= Hostname: pierb505p26.engin.umich.edu Vendor: Windows Model: OptiPlex 980 Swap: 0 Memory: 0 Sess_Count: 0 Load: One: 1 Five: 5 Fifteen: 15 In_Use: false Free_In_Tmp: 11303888 Class: L Location: Building: PIERPONT Computers: 26 Room: B505 String: B505 PIERPONT Ip: 141.213.54.36 Last_Access: Last_Report: 1383202027 ================================= Hostname: pierb505p19.engin.umich.edu Vendor: Windows Model: OptiPlex 980 Swap: 0 Memory: 0 Sess_Count: 0 Load: One: 1 Five: 5 Fifteen: 15 In_Use: false Free_In_Tmp: 15914176 Class: L Location: Building: PIERPONT Computers: 26 Room: B505 String: B505 PIERPONT Ip: 141.213.54.29 Last_Access: Last_Report: 1383202081 ================================= Hostname: pierb505p09.engin.umich.edu Vendor: Windows Model: OptiPlex 980 Swap: 0 Memory: 0 Sess_Count: 0 Load: One: 1 Five: 5 Fifteen: 15 In_Use: false Free_In_Tmp: 29956064 Class: L Location: Building: PIERPONT Computers: 26 Room: B505 String: B505 PIERPONT Ip: 141.213.54.19 Last_Access: Last_Report: 1383201997 ================================= Hostname: pierb505p10.engin.umich.edu Vendor: Windows Model: OptiPlex 980 Swap: 0 Memory: 0 Sess_Count: 0 Load: One: 1 Five: 5 Fifteen: 15 In_Use: false Free_In_Tmp: 19663960 Class: L Location: Building: PIERPONT Computers: 26 Room: B505 String: B505 PIERPONT Ip: 141.213.54.20 Last_Access: Last_Report: 1383202003 ================================= Hostname: pierb505p24.engin.umich.edu Vendor: Windows Model: OptiPlex 980 Swap: 0 Memory: 0 Sess_Count: 0 Load: One: 1 Five: 5 Fifteen: 15 In_Use: false Free_In_Tmp: 19197988 Class: L Location: Building: PIERPONT Computers: 26 Room: B505 String: B505 PIERPONT Ip: 141.213.54.34 Last_Access: Last_Report: 1383202038 ================================= Hostname: pierb505p20.engin.umich.edu Vendor: Windows Model: OptiPlex 980 Swap: 0 Memory: 0 Sess_Count: 0 Load: One: 1 Five: 5 Fifteen: 15 In_Use: false Free_In_Tmp: 9585536 Class: L Location: Building: PIERPONT Computers: 26 Room: B505 String: B505 PIERPONT Ip: 141.213.54.30 Last_Access: Last_Report: 1383201994
请享用!
归档时间: |
|
查看次数: |
36589 次 |
最近记录: |