我正在使用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())