【问题标题】:String match and check in jsp with webservice data in json format字符串匹配并用json格式的webservice数据签入jsp
【发布时间】:2013-12-18 10:10:21
【问题描述】:

在我的 jsp 应用程序中,我调用了一个 Web 服务,我从中获取 json fromat 中的数据,如下所示

获取json数据的代码是

 String recv ="";
 String recvbuff ="";
 URL jsonpage = new URL("http://107.109.6.236:3000/api/tokens.json");
 URLConnection urlcon = jsonpage.openConnection();
 BufferedReader buffread = new BufferedReader(new InputStreamReader(urlcon.getInputStream()));

 while ((recv = buffread.readLine()) != null)
 recvbuff += recv;
 buffread.close();

下面是recvbuff输出。

[{"id":1,"session_id":"11611fba0cd57f2f0e62acf746d7f60b","link":"","created_at":"2013- 12-10T13:13:31.000Z","updated_at":"2013-12-10T13:13:31.000Z"}, 
{"id":2,"session_id":"848960680b00502fc3e4c9cf0652a5fe","link":"","created_at":"2013-12-10T13:13:31.000Z","updated_at":"2013-12-10T13:13:31.000Z"},
{"id":3,"session_id":"101155b2c4cef0034804ed9b6806422e","link":"","created_at":"2013-12-10T13:13:31.000Z","updated_at":"2013-12-10T13:13:31.000Z"},
{"id":4,"session_id":"ec1373a7bdd291f60266ab6f8445c23b","link":"","created_at":"2013-12-10T13:13:31.000Z","updated_at":"2013-12-10T13:13:31.000Z"},
{"id":5,"session_id":"3eb8b185f0cbd71ff004b30453c90f54","link":"","created_at":"2013-12-10T13:13:31.000Z","updated_at":"2013-12-10T13:13:31.000Z"}]

我有一个 token_id,例如 3eb8b185f0cbd71ff004b30453c90f54,它将与 session_id 之一匹配。如果与确切的字符串不匹配,它将重定向到错误页面。

为此,我使用以下代码。

if(recvbuff.contains(token_id)){
 out.println("<br>Hello <b>"+token_id+"</b>! done"); 
 }else{
  response.sendRedirect(redirectURL);
}

如何在jsp页面中得到精确匹配?

【问题讨论】:

  • recvbuff 是包含 JSON 字符串的字符串吗?还是解析了 JSON 的 JSON 对象?不清楚应该如何对对象 recvbuff 进行比较,因为我们不知道该对象是什么!
  • @DanTemple recvbuff 是一个包含 JSON 字符串的字符串
  • 也许添加如何制作recvbuff 的代码会有所帮助。听起来它可能是包含 JSON 数组中所有对象的字符串,也可能是包含数组中单个 json 对象的字符串。在第一种情况下,如果 token_id 在数组中的任何位置,您将始终匹配。在第二种情况下,您需要遍历数组并单独检查每个字符串。
  • @DanTemple recvbuff 代码已添加。

标签: java regex json jsp


【解决方案1】:

尝试这样的事情(写在 scriplets 中作为它的 jsp 页面):

  String ar = "[{\"id\":1,\"session_id\":\"11611fba0cd57f2f0e62acf746d7f60b\",\"link\":\"\",\"created_at\":\"2013- 12-10T13:13:31.000Z\",\"updated_at\":\"2013-12-10T13:13:31.000Z\"}, \n"
                + "{\"id\":2,\"session_id\":\"848960680b00502fc3e4c9cf0652a5fe\",\"link\":\"\",\"created_at\":\"2013-12-10T13:13:31.000Z\",\"updated_at\":\"2013-12-10T13:13:31.000Z\"},\n"
                + "{\"id\":3,\"session_id\":\"101155b2c4cef0034804ed9b6806422e\",\"link\":\"\",\"created_at\":\"2013-12-10T13:13:31.000Z\",\"updated_at\":\"2013-12-10T13:13:31.000Z\"},\n"
                + "{\"id\":4,\"session_id\":\"ec1373a7bdd291f60266ab6f8445c23b\",\"link\":\"\",\"created_at\":\"2013-12-10T13:13:31.000Z\",\"updated_at\":\"2013-12-10T13:13:31.000Z\"},\n"
                + "{\"id\":5,\"session_id\":\"3eb8b185f0cbd71ff004b30453c90f54\",\"link\":\"\",\"created_at\":\"2013-12-10T13:13:31.000Z\",\"updated_at\":\"2013-12-10T13:13:31.000Z\"}]";

        String token_id = "3eb8b185f0cbd71ff004b30453c90f54";
        JSONArray jsonArray = new JSONArray(ar);
        boolean match_found = false;
        o:
        for (int i = 0; i < jsonArray.length(); i++) {
            if (token_id.equals(jsonArray.getJSONObject(i).getString("session_id"))) {
                match_found = true;
                break o;
            }
        }
        if(match_found  == true)
        {
            response.sendRedirect("error.jsp");
        }

【讨论】:

  • 我将如何创建字符串 ar ?你能帮忙吗?我有非常基本的java知识,提前谢谢
  • "ar" 是包含json字符串的字符串,在你的情况下,我认为它的recvbuff,使用它。
  • 它显示此错误org.apache.jasper.JasperException: Unable to compile class for JSP:
  • 我已经更新了我如何获取recvbuff 数据的问题
  • 那不会有帮助,因为我们无法访问该数据,您是否在 recvbuff 中获取 json 字符串
猜你喜欢
  • 1970-01-01
  • 2014-05-07
  • 2021-09-24
  • 2021-09-25
  • 2019-09-03
  • 1970-01-01
  • 1970-01-01
  • 2019-04-05
  • 2015-11-16
相关资源
最近更新 更多