我正在使用Gson库将对象的JSON数组转换为String。
但是我收到无法从DataIntent转换为Result的错误!!

DataIntent是POJO类的名称。

data.json

`{
 "dataIntents": [
   {
     "intent": "muster.policy.daily",
     "expr": "Am I supposed to register my attendance daily?"
   },
   {
     "intent": "leave.probation",
     "expr": "An employee is eligible for how many leaves ??"
   }
  ]
}`


POJO类:

 public class DataIntent {

 private String intent;
 private String expr;

 //getters and setters

 }'


示例类

 public class Example {

 private List<DataIntent> dataIntents = null;

 public List<DataIntent> getDataIntents() {
    return dataIntents;
 }

 public void setDataIntents(List<DataIntent> dataIntents) {
    this.dataIntents = dataIntents;
 }

 }


主类:

   public class JSONMain {
   public static void main(String[] args) {
    Gson gson = new Gson();
    BufferedReader br = null;
    try {
        br = new BufferedReader(new FileReader("data.json"));
        org.junit.runner.Result result = (org.junit.runner.Result)
        gson.fromJson(br, DataIntent.class);

    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
  }
}


我不知道我在做什么错?因为我是编程新手。
我已经在youtube (This link)上的视频中看到了

我在遇到问题

org.junit.runner.Result result = (org.junit.runner.Result)gson.fromJson(br, DataIntent.class);


这是我使用的正确结果吗?否则其他解决方案是什么,这样我就可以解析我的JSONArray对象以获取key:'expr'的值
请帮忙!!

最佳答案

gson.fromJson将json字符串反序列化为您作为参数提供的类的对象,在本例中为DataIntent.class
在您链接的视频中,Result是他要反序列化json字符串的类。
实际上,该语句是:

Result result = gson.fromJson(br, Result.class)


不需要强制类型转换,您只需要定义要实例化的变量,就可以将与作为参数传递给fromJson方法的类型相同的类型进行反序列化。

DataIntent di = gson.fromJson(br, DataIntent.class);


根据您的评论进行编辑:
您应该反序列化您的Example类:

Example example = gson.fromJson(br, Example.class);


然后遍历Example类的DataIntent列表:

for(DataIntent di : example.getDataIntents())

10-07 19:23