我得到这个不正确的演员,下面是函数
private Model readJson(String str) {
Model m = new Model();
OrderedMap<String,?> rootElem
= (OrderedMap<String,?>) new JsonReader().parse(str); //this line has casting problem
Array<?> bodiesElems = (Array<?>) rootElem.get("rigidBodies");
for (int i=0; i<bodiesElems.size; i++) {
OrderedMap<String,?> bodyElem = (OrderedMap<String,?>) bodiesElems.get(i);
RigidBodyModel rbModel = readRigidBody(bodyElem);
m.rigidBodies.put(rbModel.name, rbModel);
}
return m;
}
答案 0 :(得分:3)
因为libgdx的新版本确实支持Jsonvalue和this帮助
private Model readJson(String str) {
Model m = new Model();
JsonValue map = new JsonReader().parse(str);
JsonValue bodyElem = map.getChild("rigidBodies");
for (; bodyElem != null; bodyElem = bodyElem.next()) {
RigidBodyModel rbModel = readRigidBody(bodyElem);
m.rigidBodies.put(rbModel.name, rbModel);
}
return m;
}
答案 1 :(得分:2)
parse
method returns a JsonValue
。
你可能会看到这种不匹配的原因是更新的Libgdx版本,包括对JSON代码的不向后兼容的更改。请参阅the blog post,其中包括:
只有阅读JSON才会受到影响。如果你使用JsonReader,你会回来的 一个JsonValue而不是OrderedMap。
您可以通过更新代码以使用JsonValue
或降级到旧版本的libgdx(4月25日之前)来解决此问题。如果您正在使用每晚构建的Libgdx,请务必注意更改并跟上博客(大多数重大变更都会公布)。否则,坚持使用Libgdx的“已发布”版本可能更安全。