开发者社区> 问答> 正文

使用json包中的函数,提示source not found

开发安卓项目的时候,使用json包中的函数,例如JSONObject jsonObject = JSONObject.fromObject(result),就会报错。debug时显示source not found。logcat中的报错:
screenshot
json相关的6个jar都已经加入build path。在其它的项目中都是好用的。为什么安卓里不行?本人第一次开发安卓,纯小白,望大神指教,谢谢!贴一下代码:安卓客户端的:

public boolean login(String phoneNumber, String pass) {     
        String path=ServerConfiguration.basicUrl + "/UserServlet";
        //将用户名和密码放入HashMap中
        Map<String,String> params=new HashMap<String,String>();
        params.put("phoneNumber", phoneNumber);
        params.put("passWord", pass);       
        String result = "";
        try {
            result = this.sendGETRequest(path,params,"UTF-8");
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        if(result != ""){
            JSONArray jsonArray = null;
            try{
                JSONObject  jsonObject = JSONObject.fromObject(result);
                jsonObject.toJSONArray(jsonArray);
            }catch(Exception e){
                e.printStackTrace();
            }
            System.out.println(result);
            List<User> output = null;
            output = JSONArray.toList(jsonArray,User.class);
            UserData.user = output.get(0);
            ServerConfiguration.sessionId = UserData.user.getSessionId();
            return true;
        }
        return false;
    }

这个函数在点击登录按钮时被调用。
提交get请求后,可以正确返回json格式的result。
debug到这句话:JSONObject jsonObject = JSONObject.fromObject(result); 的时候报错:
图片说明

对应的服务器端的servlet:

 public class UserServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;   
    public UserServlet() {
        super();
    }
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {      
        //规定编码
        request.setCharacterEncoding("UTF-8");
        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=utf-8");

        String phoneNumber = request.getParameter("phoneNumber");
        String passWord = request.getParameter("passWord");

        UserService userService = new UserService();
        User user = userService.selectUserByPhoneNumber(phoneNumber);

        if(user.getPassword().equals(passWord)){
            HttpSession session = request.getSession();
            user.setSessionId(session.getId());
            session.setAttribute("user", user);
            SessionData.addSession(session);

            JSONArray jsonArray = JSONArray.fromObject(user);
            response.getWriter().println(jsonArray.toString()); 
        }
    }   
    protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request, response);
    }
}

展开
收起
杨冬芳 2016-07-05 13:13:32 4738 0
1 条回答
写回答
取消 提交回答
  • IT从业

    在当前活动中不能执行该方法, 你这个方法是耗时操作吗? 还是仅仅就是数据的的封装?
    不知道你项目中的具体逻辑,

    2019-07-17 19:51:23
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
OPEN SOURCE IN A DATA-DRIVEN WORLD 立即下载
OPEN SOURCE 立即下载
Data Pre-Processing in Python: 立即下载