有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Android JSON性能问题

我在将JSON字符串解析回java对象时遇到性能问题。 代码如下:

public List<BusinessObject> transferToDomain(String pJSON) {
        List<BusinessObject> lAllBusinessObject = new ArrayList<BusinessObject>();
        if (null == pJSON || pJSON.equals("")){
            return lAllBusinessObject;
        }
        JSON lJSON = JSONSerializer.toJSON(pJSON); <-- LONG RUNTIME HERE!
        if (lJSON.isEmpty()) {
            return lAllBusinessObject;
        } else {
            if (lJSON.isArray()) {
                JSONArray lJSONArray = (JSONArray) lJSON;
                for (Object lObject : lJSONArray) {
                    JSONObject lJSONObject = (JSONObject) lObject;
                    lAllBusinessObject.add(doTransfer(lJSONObject));
                }
            } else {
                JSONObject json = (JSONObject) lJSON;
                BusinessObject lBusinessObject = doTransfer(json);
                if (null != lBusinessObject) {
                    lAllBusinessObject.add(lBusinessObject);
                }
            }
        }
        return lAllBusinessObject;
    }

如果我用200个测试对象(在pJSON中)运行我的测试方法,整个操作将在不到2秒钟内完成。 如果我在Android仿真器中使用从服务器接收到的200个对象运行相同的方法,整个操作需要4分钟以上

它与那行代码有关:

JSON lJSON = JSONSerializer.toJSON(pJSON);

但是我不明白为什么我的JUnit方法很快,而仿真器在执行这个方法时真的很慢

我正在使用json-lib-2.4-jdk15.jar

我需要一些建议

提前谢谢

斯特凡


共 (2) 个答案

  1. # 1 楼答案

    为什么不使用杰克逊图书馆。与Gson或其他产品相比,它具有最快的json解析能力。它具有所有功能,json到类obj,obj到json。使用Jackson测试你的表现

  2. # 2 楼答案

    我找到了表现缓慢的原因。 如果我不在调试模式下运行应用程序,性能会非常快(<;5秒)。 在我看来,这是一个调试模式问题