我从服务器接收数据,结果,根据我收到的数据,我制作了 JsonArray。但我需要以某种方式将此 JsonArray 转换为常规的类对象数组。当然,有一些方法可以根据原理运行 - 我从一个数组中取出并将其添加到另一个数组中,大致如下所示:
List<MyObj> list = new ArrayList<>();
if (outputs!= null) {
int len = outputs.length();
for (int i=0; i<len; i++) {
JSONObject o = (JSONObject) outputs.get(i);
list.add(new MyObj(o.getString('name'), o.getString('URL')));
}
}
这里当然是用的,但是JSONObject我JsonObject用的,不过我觉得不会有太大的区别。我目前正在尝试这样做:
val testArray = tpsObject.getAsJsonObject("questions")[tpsSelection[0].toString()].asJsonArray
for (i in 0 until testArray.size()) {
Log.i("m",Gson().fromJson(testArray.get(i).asJsonObject.toString(),QuestionModel::class.java).question.toString())
}
但我收到一个错误:
com.google.gson.JsonSyntaxException: Expected a com.google.gson.JsonObject but was com.google.gson.JsonArray
当我只是尝试输出一个数组时:
Log.i("m",testArray.get(i).asJsonObject.toString())
然后一切都正常显示在日志中,它仍然只是以某种方式转换为所需的。像这样尝试:
val jsonParser = JsonParser.parseString(testArray.get(i).asJsonObject.toString())
val model: QuestionModel = Gson().fromJson(jsonParser, QuestionModel::class.java)
我得到与上面相同的错误。完成此任务的选项有哪些?
像这样解决了我的问题:
结果,我得到了一个由已经可以进一步处理的对象组成的数组。也许有人会派上用场:)