java – Android和GSON抛出No-Args构造函数未找到异常
发布时间:2020-12-15 04:54:14 所属栏目:Java 来源:网络整理
导读:我的 Android应用程序中存在GSON问题. JSON输入 [ {"id":"1202","parent_id":"0","agrpcount":"0","disp_order":"1","code":"PROD-NEW","name":"New Products","active":"1"},{"id":"1119","disp_order":"2","code":"PROD-VID","name":""How To" Video
我的
Android应用程序中存在GSON问题.
JSON输入 [ {"id":"1202","parent_id":"0","agrpcount":"0","disp_order":"1","code":"PROD-NEW","name":"New Products","active":"1"},{"id":"1119","disp_order":"2","code":"PROD-VID","name":""How To" Videos",{"id":"1685","disp_order":"3","code":"SUPP-RESOUR","name":"Support Resources",{"id":"49","disp_order":"109","code":"EQ","name":"Equipment for Sign Making",{"id":"22","disp_order":"110","code":"application-tape","name":"Application Tapes","active":"1"} ] 每个数组项的容器类 public class Category { public int id; public int parent_id; public int agrpcount; public int disp_order; public String code; public String name; public int active; } 要加载类别数组的类 public static List<Category> getCategories(){ Category[] cats; Gson gson = new Gson(); cats = gson.fromJson(strJSON,Category[].class); List<Category> CatsList = Arrays.asList(cats); return CatsList; } 当我运行此代码时,我在日志中得到以下内容 02-28 15:15:42.471: ERROR/AndroidRuntime(777): Caused by: java.lang.RuntimeException: No-args constructor for class com.signwarehouse.catalog.SWService$Category does not exist. Register an InstanceCreator with Gson for this type to fix this problem. 02-28 15:15:42.471: ERROR/AndroidRuntime(777): at com.google.gson.MappedObjectConstructor.constructWithNoArgConstructor(MappedObjectConstructor.java:64) 02-28 15:15:42.471: ERROR/AndroidRuntime(777): at com.google.gson.MappedObjectConstructor.construct(MappedObjectConstructor.java:53) 02-28 15:15:42.471: ERROR/AndroidRuntime(777): at com.google.gson.JsonObjectDeserializationVisitor.constructTarget(JsonObjectDeserializationVisitor.java:40) 02-28 15:15:42.471: ERROR/AndroidRuntime(777): at com.google.gson.JsonDeserializationVisitor.getTarget(JsonDeserializationVisitor.java:56) 02-28 15:15:42.471: ERROR/AndroidRuntime(777): at com.google.gson.ObjectNavigator.accept(ObjectNavigator.java:109) 02-28 15:15:42.471: ERROR/AndroidRuntime(777): at com.google.gson.JsonDeserializationVisitor.visitChild(JsonDeserializationVisitor.java:107) 02-28 15:15:42.471: ERROR/AndroidRuntime(777): at com.google.gson.JsonDeserializationVisitor.visitChildAsObject(JsonDeserializationVisitor.java:95) 02-28 15:15:42.471: ERROR/AndroidRuntime(777): at com.google.gson.JsonArrayDeserializationVisitor.visitArray(JsonArrayDeserializationVisitor.java:72) 02-28 15:15:42.471: ERROR/AndroidRuntime(777): at com.google.gson.ObjectNavigator.accept(ObjectNavigator.java:117) 02-28 15:15:42.471: ERROR/AndroidRuntime(777): at com.google.gson.JsonDeserializationContextDefault.fromJsonArray(JsonDeserializationContextDefault.java:64) 02-28 15:15:42.471: ERROR/AndroidRuntime(777): at com.google.gson.JsonDeserializationContextDefault.deserialize(JsonDeserializationContextDefault.java:49) 02-28 15:15:42.471: ERROR/AndroidRuntime(777): at com.google.gson.Gson.fromJson(Gson.java:568) 02-28 15:15:42.471: ERROR/AndroidRuntime(777): at com.google.gson.Gson.fromJson(Gson.java:515) 02-28 15:15:42.471: ERROR/AndroidRuntime(777): at com.google.gson.Gson.fromJson(Gson.java:484) 02-28 15:15:42.471: ERROR/AndroidRuntime(777): at com.google.gson.Gson.fromJson(Gson.java:434) 02-28 15:15:42.471: ERROR/AndroidRuntime(777): at com.google.gson.Gson.fromJson(Gson.java:406) 我尝试将一个no-args构造函数添加到Category类中,但这没有帮助.因为Java会自动创建它,所以不足为奇 有谁知道如何解决这个问题? 谢谢. 解决方法
尝试将Category类设为公共静态类…
public static class Category {/* fields */} 我打赌正在发生的事情是因为你没有使类静态,它首先尝试创建你的父/外部类(com.signwarehouse.catalog.SWService),它可能没有no-arg构造函数. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |