在嘗試將json對象轉換為list時候出現了如下錯誤
Exception in thread "main" net.sf.json.JSONException: java.lang.NoSuchMethodException: AAA$Pdata.<init>() at net.sf.json.JSONObject.toBean(JSONObject.java:288) at net.sf.json.JSONArray.toCollection(JSONArray.java:444) at net.sf.json.JSONArray.toCollection(JSONArray.java:387) at AAA.main(SWDataCalculateFilter.java:149) Caused by: java.lang.NoSuchMethodException: AAA$Pdata.<init>() at java.lang.Class.getConstructor0(Class.java:2730) at java.lang.Class.getDeclaredConstructor(Class.java:2004) at net.sf.json.util.NewBeanInstanceStrategy$DefaultNewBeanInstanceStrategy.newInstance(NewBeanInstanceStrategy.java:55) at net.sf.json.JSONObject.toBean(JSONObject.java:282) ... 3 more
代碼如下
import java.text.DecimalFormat; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Vector; import net.sf.json.JSONArray; import net.sf.json.JSONObject; public class AAAAA extends BaseFilter{ public static void main(String[] args){ String json="[{\"x\":\"0\",\"y\":\"5\"},{\"x\":\"1\",\"y\":\"6\"},{\"x\":\"2\",\"y\":0}]"; JSONArray jsonarray = JSONArray.fromObject(json); System.out.println(jsonarray); List list = (List)JSONArray.toCollection(jsonarray, Pdata.class); System.out.println(2.1111>2.0010); } //坐標內部類 public class Pdata{ public double getX() { return x; } public double getY() { return y; } public void setX(double x) { this.x = x; } public void setY(double y) { this.y = y; } private double x; private double y; public Pdata(){} public Pdata(double x,double y){ this.x=x; this.y=y; } } }
解決方案
1、對於目標轉換類,需要添加一個參數為空的構造函數
2、對於內部類,需要加static關鍵字
順利解決