我正在使用Gson库将我的JSON对象数组转换为String。 但是我收到无法从DataIntent转换为结果 !!
的错误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对象获取密钥:'expr'的值 请帮忙!!
答案 0 :(得分:0)
gson.fromJson
将json字符串反序列化为您在参数中提供的类的对象DataIntent.class
。
在您关联的视频中,Result
是他要将json字符串反序列化为的类。
实际上声明是:
Result result = gson.fromJson(br, Result.class)
不需要强制转换,您只需要定义要实例化的变量,并将您作为参数传递给fromJson方法的相同类型的desarial化结果:
DataIntent di = gson.fromJson(br, DataIntent.class);
根据您的评论修改: 您应该反序列化到Example类:
Example example = gson.fromJson(br, Example.class);
然后循环遍历Example类的DataIntent列表:
for(DataIntent di : example.getDataIntents())