NullPointer代号为One

时间:2017-04-29 09:57:26

标签: php json codenameone

我的代码使用插件代号为1时遇到了一些问题 它告诉我有一个nullpointer异常,但相同的代码在其他一些计算机上工作,所以我真的不知道问题究竟在哪里

    Form hi = new Form("Hi World");
    SpanLabel sp = new SpanLabel();
    hi.add(sp);
 hi.show();

    ConnectionRequest con = new ConnectionRequest();
    con.setUrl("http://localhost/pidev2017/select.php");
    con.addResponseListener(new ActionListener<NetworkEvent>() {

        @Override
        public void actionPerformed(NetworkEvent evt) {
            System.out.println(getListEtudiant(new String(con.getResponseData())));
            sp.setText(getListEtudiant(new String(con.getResponseData())) + "");
            hi.refreshTheme();

        }
    });
    NetworkManager.getInstance().addToQueue(con);
}

public ArrayList<Etudiant> getListEtudiant(String json) {
    ArrayList<Etudiant> listEtudiants = new ArrayList<>();

    try {

        JSONParser j = new JSONParser();

        Map<String, Object> etudiants = j.parseJSON(new CharArrayReader(json.toCharArray()));

        System.out.println();
        List<Map<String, Object>> list = (List<Map<String, Object>>) etudiants.get("etudiant");

        for (Map<String, Object> obj : list) {
            Etudiant e = new Etudiant();
            e.setAge(Integer.parseInt(obj.get("age").toString()));
            e.setCin(obj.get("cin").toString());
            e.setNom(obj.get("nom").toString());
            listEtudiants.add(e);

        }

    } catch (IOException ex) {
     }
    return listEtudiants;

}

这是我得到的错误

显示java.lang.NullPointerException [EDT] 0:0:0,2 - 解析行中的JSON令牌时键值的预期null:2列:72缓冲区:e1elxde-exe-dlde1ell [EDT] 0:0:0,2 - 解析行中的JSON标记时键值的预期null:2列:85缓冲区:e1elxde-exe-dlde1ell0elldd [EDT] 0:0:0,2 - 在行解析JSON标记时,键值的预期为真:3列:2缓冲区:e1elxde-exe-dlde1ell0elldd1 [EDT] 0:0:0,2 - 在行解析JSON标记时,键值的预期为真:3列:3缓冲区:e1elxde-exe-dlde1ell0elldd1 [EDT] 0:0:0,2 - 解析行中的JSON标记时键值的预期null:3列:7缓冲区:e1elxde-exe-dlde1ell0elldd1l [EDT] 0:0:0,2 - 在行解析JSON标记时,键值预期为真:3列:10缓冲区:e1elxde-exe-dlde1ell0elldd1lef [EDT] 0:0:0,2 - 解析行中的JSON令牌时键值的预期值为null:3列:34缓冲区:e1elxde-exe-dlde1ell0elldd1leflf57900l

at com.mycompany.myapp.MyApplication.getListEtudiant(MyApplication.java:80)
at com.mycompany.myapp.MyApplication$1.actionPerformed(MyApplication.java:59)
at com.mycompany.myapp.MyApplication$1.actionPerformed(MyApplication.java:55)
at com.codename1.ui.util.EventDispatcher.fireActionSync(EventDispatcher.java:459)
at com.codename1.ui.util.EventDispatcher.access$100(EventDispatcher.java:45)
at com.codename1.ui.util.EventDispatcher$CallbackClass.run(EventDispatcher.java:95)
at com.codename1.ui.Display.processSerialCalls(Display.java:1152)
at com.codename1.ui.Display.edtLoopImpl(Display.java:1096)
at com.codename1.ui.Display.mainEDTLoop(Display.java:997)
at com.codename1.ui.RunnableWrapper.run(RunnableWrapper.java:120)
at com.codename1.impl.CodenameOneThread.run(CodenameOneThread.java:176)

1 个答案:

答案 0 :(得分:0)

由于堆栈跟踪显示getListEtudiant在第80行有一个空指针异常。由于我不能告诉第80行并且不知道输入值是什么,我可以&#t; t给你一个更准确的答案,但这里是通用答案。

当您点击该断点时,在第80行的调试器中放置一个断点,使用inspect variables工具检查各个元素并查看该行失败的原因。

同时在模拟器中打开网络监视工具并检查请求/响应调用,这有助于了解出现问题的地方。