返回的Json:[{"gTaskId":"BC8624F0E7284DE1","ulRet":0,"execStatus":"Cmd Execute Success!","ulRetParam1":0,"ulTaskStatus":4,"ulRetParam2":0,"cmdName":"SnmpRuleGet","nNums":7,"rules":[{"nSnmpTry":1,"nSnmpVersion":2,"szCommunity":"public","nType":1,"nCurrentTick":-1486217421,"szParam":"1","iD":0,"szOid":"1.3.6.1.4.1.789.1.6.2.1.3.1","szUpdateTime":"","szCreateTime":"","szSnmpIP":"10.1.8.88","pollTime":5,"nSnmpTimeOut":3,"nSnmpPort":32161},{"nSnmpTry":0,"nSnmpVersion":2,"szCommunity":"public","nType":1,"nCurrentTick":-1486347421,"szParam":"","iD":7,"szOid":"1.3.6.1.4.1.789.1.2.1.7","szUpdateTime":"2013-5-9 13:9:0","szCreateTime":"2013-5-9 13:9:0","szSnmpIP":"180.153.104.3","pollTime":500,"nSnmpTimeOut":30,"nSnmpPort":32161},{"nSnmpTry":0,"nSnmpVersion":2,"szCommunity":"public","nType":1,"nCurrentTick":-1486347421,"szParam":"","iD":4,"szOid":"1.3.6.1.4.1.789.1.2.2.6","szUpdateTime":"2013-5-9 13:8:0","szCreateTime":"2013-5-9 13:8:0","szSnmpIP":"180.153.104.3","pollTime":500,"nSnmpTimeOut":30,"nSnmpPort":32161},{"nSnmpTry":0,"nSnmpVersion":2,"szCommunity":"public","nType":1,"nCurrentTick":-1486347421,"szParam":"","iD":5,"szOid":"1.3.6.1.4.1.789.1.2.2.7","szUpdateTime":"2013-5-9 13:8:0","szCreateTime":"2013-5-9 13:8:0","szSnmpIP":"180.153.104.3","pollTime":500,"nSnmpTimeOut":30,"nSnmpPort":32161},{"nSnmpTry":0,"nSnmpVersion":2,"szCommunity":"public","nType":1,"nCurrentTick":-1486347421,"szParam":"","iD":9,"szOid":"1.3.6.1.4.1.789.1.6.2.1.3","szUpdateTime":"2013-5-9 13:25:0","szCreateTime":"2013-5-9 13:25:0","szSnmpIP":"180.153.104.3","pollTime":500,"nSnmpTimeOut":30,"nSnmpPort":32161},{"nSnmpTry":0,"nSnmpVersion":2,"szCommunity":"public","nType":1,"nCurrentTick":-1486347421,"szParam":"","iD":10,"szOid":"1.3.6.1.4.1.789.1.6.2.1.3.1","szUpdateTime":"2013-5-9 18:31:0","szCreateTime":"2013-5-9 18:31:0","szSnmpIP":"180.153.104.3","pollTime":500,"nSnmpTimeOut":30,"nSnmpPort":32161},{"nSnmpTry":0,"nSnmpVersion":2,"szCommunity":"public","nType":1,"nCurrentTick":-1486653421,"szParam":"","iD":6,"szOid":"1.3.6.1.4.1.789.1.2.2.7","szUpdateTime":"2013-5-9 13:9:0","szCreateTime":"2013-5-9 13:9:0","szSnmpIP":"180.153.104.4","pollTime":600,"nSnmpTimeOut":30,"nSnmpPort":32161}]}]public class ResultRules {
private String gTaskId;
private int ulRet;
private String execStatus;
private int ulRetParam1;
private int ulRetParam2;
private int ulTaskStatus;
private String cmdName;
private int nNUms;
private List<Rules> rules; public String getgTaskId() {
return gTaskId;
} public void setgTaskId(String gTaskId) {
this.gTaskId = gTaskId;
} public int getUlRet() {
return ulRet;
} public void setUlRet(int ulRet) {
this.ulRet = ulRet;
} public String getExecStatus() {
return execStatus;
} public void setExecStatus(String execStatus) {
this.execStatus = execStatus;
} public int getUlRetParam1() {
return ulRetParam1;
} public void setUlRetParam1(int ulRetParam1) {
this.ulRetParam1 = ulRetParam1;
} public int getUlRetParam2() {
return ulRetParam2;
} public void setUlRetParam2(int ulRetParam2) {
this.ulRetParam2 = ulRetParam2;
} public int getUlTaskStatus() {
return ulTaskStatus;
} public void setUlTaskStatus(int ulTaskStatus) {
this.ulTaskStatus = ulTaskStatus;
} public String getCmdName() {
return cmdName;
} public void setCmdName(String cmdName) {
this.cmdName = cmdName;
} public int getnNUms() {
return nNUms;
} public void setnNUms(int nNUms) {
this.nNUms = nNUms;
} public List<Rules> getRules() {
return rules;
} public void setRules(List<Rules> rules) {
this.rules = rules;
}}
public class Rules {
private int nSnmpTry;
private int nSnmpVersion;
private String szCommunity;
private int nType;
private int nCurrentTick;
private String szParam;
private String szOid;
private int PollTime;
private String szUpdateTime;
private String szCreateTime;
private String szSnmpIP;
private int ID;
private int nSnmpTimeOut;
private int nSnmpPort; public int getnSnmpTry() {
return nSnmpTry;
} public void setnSnmpTry(int nSnmpTry) {
this.nSnmpTry = nSnmpTry;
} public int getnSnmpVersion() {
return nSnmpVersion;
} public void setnSnmpVersion(int nSnmpVersion) {
this.nSnmpVersion = nSnmpVersion;
} public String getSzCommunity() {
return szCommunity;
} public void setSzCommunity(String szCommunity) {
this.szCommunity = szCommunity;
} public int getnType() {
return nType;
} public void setnType(int nType) {
this.nType = nType;
} public int getnCurrentTick() {
return nCurrentTick;
} public void setnCurrentTick(int nCurrentTick) {
this.nCurrentTick = nCurrentTick;
} public String getSzParam() {
return szParam;
} public void setSzParam(String szParam) {
this.szParam = szParam;
} public String getSzOid() {
return szOid;
} public void setSzOid(String szOid) {
this.szOid = szOid;
} public int getPollTime() {
return PollTime;
} public void setPollTime(int pollTime) {
PollTime = pollTime;
} public String getSzUpdateTime() {
return szUpdateTime;
} public void setSzUpdateTime(String szUpdateTime) {
this.szUpdateTime = szUpdateTime;
} public String getSzCreateTime() {
return szCreateTime;
} public void setSzCreateTime(String szCreateTime) {
this.szCreateTime = szCreateTime;
} public String getSzSnmpIP() {
return szSnmpIP;
} public void setSzSnmpIP(String szSnmpIP) {
this.szSnmpIP = szSnmpIP;
} public int getID() {
return ID;
} public void setID(int iD) {
ID = iD;
} public int getnSnmpTimeOut() {
return nSnmpTimeOut;
} public void setnSnmpTimeOut(int nSnmpTimeOut) {
this.nSnmpTimeOut = nSnmpTimeOut;
} public int getnSnmpPort() {
return nSnmpPort;
} public void setnSnmpPort(int nSnmpPort) {
this.nSnmpPort = nSnmpPort;
} public Rules() { } public Rules(int nSnmpTry, int nSnmpVersion, String szCommunity, int nType, int nCurrentTick, String szParam, String szOid, int pollTime, String szUpdateTime, String szCreateTime, String szSnmpIP, int iD, int nSnmpTimeOut, int nSnmpPort) {
super();
this.nSnmpTry = nSnmpTry;
this.nSnmpVersion = nSnmpVersion;
this.szCommunity = szCommunity;
this.nType = nType;
this.nCurrentTick = nCurrentTick;
this.szParam = szParam;
this.szOid = szOid;
this.PollTime = pollTime;
this.szUpdateTime = szUpdateTime;
this.szCreateTime = szCreateTime;
this.szSnmpIP = szSnmpIP;
this.ID = iD;
this.nSnmpTimeOut = nSnmpTimeOut;
this.nSnmpPort = nSnmpPort;
}
用jsonObject.fromObject拿出jsonArray.get(i)中的object,转换成ResultRules后,用jsonObject.toBean方法传入jsonObject和ResultRules.class,报错,说rules属性未找到getter和setter方法。
求教

解决方案 »

  1.   

    Map<String, Class> map = new HashMap<String, Class>();
    map.put("rules", Rules.class);
    bean = (ResultRules) JSONObject.toBean(jsonobject, ResultRules.class, map);
      

  2.   

    可以试试xstream: http://xstream.codehaus.org/json-tutorial.html
      

  3.   


    JSONArray jsonArray = JSONArray.fromObject(result);
    Map<String, Class> map = new HashMap<String, Class>();
    map.put("rules", Rules.class);
    for (int i = 0; i < jsonArray.size(); i++) {
    JSONObject jsonObject = (JSONObject) jsonArray.get(i);
    ResultRules resultRules = (ResultRules) jsonObject.toBean(jsonObject, ResultRules.class, map);
    System.out.println(resultRules.getUlTaskStatus());
    }net.sf.json.JSONException: java.lang.NoSuchMethodException: Unknown property 'rules' on class 'class com.smonitor.bean.ResultRules'
    at net.sf.json.util.PropertySetStrategy$DefaultPropertySetStrategy._setProperty(PropertySetStrategy.java:69)
    at net.sf.json.util.PropertySetStrategy$DefaultPropertySetStrategy.setProperty(PropertySetStrategy.java:60)
    at net.sf.json.JSONObject.setProperty(JSONObject.java:1394)
    at net.sf.json.JSONObject.toBean(JSONObject.java:422)
    at net.sf.json.JSONObject.toBean(JSONObject.java:252)
    at com.smonitor.web.CommandAction.doPost(CommandAction.java:74)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    at java.lang.Thread.run(Thread.java:722)
    Caused by: java.lang.NoSuchMethodException: Unknown property 'rules' on class 'class com.smonitor.bean.ResultRules'
    at org.apache.commons.beanutils.PropertyUtilsBean.setSimpleProperty(PropertyUtilsBean.java:2133)
    at org.apache.commons.beanutils.PropertyUtils.setSimpleProperty(PropertyUtils.java:890)
    at net.sf.json.util.PropertySetStrategy$DefaultPropertySetStrategy._setProperty(PropertySetStrategy.java:67)
    ... 19 more
      

  4.   

    我发的 不是数组的情况是好用的{"gTaskId":"BC8624F0E7284DE1","ulRet":0,"execStatus":"Cmd Execute Success!","ulRetParam1":0,"ulTaskStatus":4,"ulRetParam2":0,"cmdName":"SnmpRuleGet","nNums":7,"rules":[{"nSnmpTry":1,"nSnmpVersion":2,"szCommunity":"public","nType":1,"nCurrentTick":-1486217421,"szParam":"1","iD":0,"szOid":"1.3.6.1.4.1.789.1.6.2.1.3.1","szUpdateTime":"","szCreateTime":"","szSnmpIP":"10.1.8.88","pollTime":5,"nSnmpTimeOut":3,"nSnmpPort":32161}你可以试一下。至于为什么你的不好用,可能是JSONObject jsonObject = (JSONObject) jsonArray.get(i);
    这句强制转换后的格式与上面定义的不太一样,你可以打出来比较一下 
      

  5.   

    还有这句,
    JSONObject.toBean
    JSONObject大写大写
      

  6.   


    你说的这个方法我已经试过了,报错呢,我不知道你是怎么放进去的。
    你现在发的这个json,是要序列化到ResultRules对象里的。
    你是怎么放进去的啊,求代码。
      

  7.   

    没出错啊,我特地运行了一遍,结果正常,输出 4我用的json-lib-2.4-jdk15.jar
      

  8.   

    你这复杂的json转换成bean需要一层一层的来,