gpt4 book ai didi

java - Gson : Unable to invoke no-args constructor for class

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:55:26 35 4
gpt4 key购买 nike

尽管有多个线程讨论此主题。请不要将其标记为重复。

我的 pojo 看起来像这样:

public class sample {


public sample() {
// TODO Auto-generated constructor stub
}

private String instructions;
private String resource;
private List<Map<String,String>> fields;
private String taskid;

private List<Map<String,String>> answer;

public String getTaskid() {
return taskid;
}
public void setTaskid(String taskid) {
this.taskid = taskid;
}
public String getInstructions() {
return instructions;
}
public void setInstructions(String instructions) {
this.instructions = instructions;
}
public String getResource() {
return resource;
}
public void setResource(String resource) {
this.resource = resource;
}
public List<Map<String,String>> getFields() {
return fields;
}
public void setFields(List<Map<String,String>> fields) {
this.fields = fields;
}
public List<Map<String,String>> getAnswer() {
return answer;
}
public void setAnswer(List<Map<String,String>> answer) {
this.answer = answer;
}



}

我正在执行 httpget,结果是一个 Json 对象数组,我尝试将其类型转换为样本,但它给出了一个异常。

反序列化片段如下

sample[] temp = gsonObj.fromJson(response, sample[].class);

我得到的异常是

java.lang.RuntimeException: Unable to invoke no-args constructor for class [sample;. Register an InstanceCreator with Gson for this type may fix this problem.
at com.google.gson.MappedObjectConstructor.constructWithAllocators(MappedObjectConstructor.java:68)
at com.google.gson.MappedObjectConstructor.construct(MappedObjectConstructor.java:52)
at com.google.gson.JsonObjectDeserializationVisitor.constructTarget(JsonObjectDeserializationVisitor.java:42)
at com.google.gson.JsonDeserializationVisitor.getTarget(JsonDeserializationVisitor.java:60)
at com.google.gson.ObjectNavigator.accept(ObjectNavigator.java:104)
at com.google.gson.JsonDeserializationContextDefault.fromJsonObject(JsonDeserializationContextDefault.java:76)
at com.google.gson.JsonDeserializationContextDefault.deserialize(JsonDeserializationContextDefault.java:54)
at com.google.gson.Gson.fromJson(Gson.java:551)
at com.google.gson.Gson.fromJson(Gson.java:498)
at com.google.gson.Gson.fromJson(Gson.java:467)
at com.google.gson.Gson.fromJson(Gson.java:417)
at com.google.gson.Gson.fromJson(Gson.java:389)
at HTTPClientUtils.getResultsFromMobileWorks(HTTPClientUtils.java:327)

你能告诉我我在哪里犯了错误吗??

最佳答案

无法重现。但这是有效的:

public class Sample {

public Sample(){}
public int kk;
public List<Map<String,String>> fields;


public static void main(String[] args) {
String s = "[{\"kk\":1, \"fields\":[{\"a\":\"a1\"}]}, {\"kk\":5}, {\"kk\":2}, {\"kk\":8}, {\"kk\":6, \"fields\":[{\"b\":\"b1\"}]}]";
Sample[] r = new Gson().fromJson(s, Sample[].class);
for(Sample t: r)
System.out.println(">> " + t.kk + " " + t.fields);
}

}

结果:

>> 1 [{a=a1}]
>> 5 null
>> 2 null
>> 8 null
>> 6 [{b=b1}]

旁注:

  1. 始终将您的类(class)资本化。
  2. 发布 sscce

关于java - Gson : Unable to invoke no-args constructor for class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12927097/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com