Search in sources :

Example 1 with JSON

use of com.alibaba.fastjson2.JSON in project SpringBoot-Hello by ruiyeclub.

the class FastJson2ApplicationTests method testParseArray.

/**
 * JSON字符串转换成数组
 */
@Test
public void testParseArray() {
    String str = "[\"id\", 123]";
    JSONArray objects = JSON.parseArray(str);
    String idStr = objects.getString(0);
    System.out.println(idStr);
}
Also used : JSONArray(com.alibaba.fastjson2.JSONArray) SpringBootTest(org.springframework.boot.test.context.SpringBootTest) Test(org.junit.Test)

Example 2 with JSON

use of com.alibaba.fastjson2.JSON in project SpringBoot-Hello by ruiyeclub.

the class FastJson2ApplicationTests method testParseObject.

/**
 * JSON字符串转换成对象
 */
@Test
public void testParseObject() {
    String str = "{\"id\":123}";
    JSONObject jsonObject = JSON.parseObject(str);
    Integer id = jsonObject.getInteger("id");
    System.out.println(id);
}
Also used : JSONObject(com.alibaba.fastjson2.JSONObject) SpringBootTest(org.springframework.boot.test.context.SpringBootTest) Test(org.junit.Test)

Example 3 with JSON

use of com.alibaba.fastjson2.JSON in project druid by alibaba.

the class MySqlParameterizedOutputVisitorTest_44 method test_for_parameterize.

public void test_for_parameterize() throws Exception {
    final DbType dbType = JdbcConstants.MYSQL;
    String sql = "select 1 from a where c1 in (date_format(date_add(curdate(), INTERVAL -7 DAY), '%Y%m%d'))";
    SQLStatementParser parser = SQLParserUtils.createSQLStatementParser(sql, dbType);
    List<SQLStatement> stmtList = parser.parseStatementList();
    SQLStatement statement = stmtList.get(0);
    StringBuilder out = new StringBuilder();
    SQLASTOutputVisitor visitor = SQLUtils.createOutputVisitor(out, JdbcConstants.MYSQL);
    List<Object> parameters = new ArrayList<Object>();
    visitor.setParameterized(true);
    visitor.setParameterizedMergeInList(true);
    visitor.setParameters(parameters);
    /*visitor.setPrettyFormat(false);*/
    statement.accept(visitor);
    /* JSONArray array = new JSONArray();
        for(String table : visitor.getTables()){
            array.add(table.replaceAll("`",""));
        }*/
    String psql = out.toString();
    System.out.println(psql);
    assertEquals("SELECT ?\n" + "FROM a\n" + "WHERE c1 IN (date_format(date_add(curdate(), INTERVAL ? DAY), '%Y%m%d'))", psql);
    String params_json = JSON.toJSONString(parameters, JSONWriter.Feature.WriteClassName);
    System.out.println(params_json);
    JSONArray jsonArray = JSON.parseArray(params_json);
    String json = JSON.toJSONString(jsonArray, JSONWriter.Feature.WriteClassName);
    assertEquals("[1,-7]", json);
    String rsql = SQLUtils.toSQLString(SQLUtils.parseStatements(psql, dbType), dbType, jsonArray);
    assertEquals("SELECT 1\n" + "FROM a\n" + "WHERE c1 IN (date_format(date_add(curdate(), INTERVAL -7 DAY), '%Y%m%d'))", rsql);
}
Also used : SQLStatementParser(com.alibaba.druid.sql.parser.SQLStatementParser) ArrayList(java.util.ArrayList) JSONArray(com.alibaba.fastjson2.JSONArray) SQLASTOutputVisitor(com.alibaba.druid.sql.visitor.SQLASTOutputVisitor) SQLStatement(com.alibaba.druid.sql.ast.SQLStatement) DbType(com.alibaba.druid.DbType)

Example 4 with JSON

use of com.alibaba.fastjson2.JSON in project druid by alibaba.

the class Oracle_param_1 method test_for_parameterize.

public void test_for_parameterize() throws Exception {
    final DbType dbType = JdbcConstants.MYSQL;
    String sql = "SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD') FROM dual;";
    SQLStatementParser parser = SQLParserUtils.createSQLStatementParser(sql, dbType);
    List<SQLStatement> stmtList = parser.parseStatementList();
    SQLStatement statement = stmtList.get(0);
    StringBuilder out = new StringBuilder();
    SQLASTOutputVisitor visitor = SQLUtils.createOutputVisitor(out, JdbcConstants.ORACLE);
    List<Object> parameters = new ArrayList<Object>();
    visitor.setParameterized(true);
    visitor.setParameterizedMergeInList(true);
    visitor.setParameters(parameters);
    /*visitor.setPrettyFormat(false);*/
    statement.accept(visitor);
    /* JSONArray array = new JSONArray();
        for(String table : visitor.getTables()){
            array.add(table.replaceAll("`",""));
        }*/
    String psql = out.toString();
    assertEquals("SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD')\n" + "FROM dual;", psql);
    String params_json = JSON.toJSONString(parameters, JSONWriter.Feature.WriteClassName);
    System.out.println(params_json);
    JSONArray jsonArray = JSON.parseArray(params_json);
    String json = JSON.toJSONString(jsonArray, JSONWriter.Feature.WriteClassName);
    assertEquals("[]", json);
    String rsql = SQLUtils.toSQLString(SQLUtils.parseStatements(psql, dbType), dbType, jsonArray);
    assertEquals("SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD')\n" + "FROM dual;", rsql);
}
Also used : SQLStatementParser(com.alibaba.druid.sql.parser.SQLStatementParser) ArrayList(java.util.ArrayList) JSONArray(com.alibaba.fastjson2.JSONArray) SQLASTOutputVisitor(com.alibaba.druid.sql.visitor.SQLASTOutputVisitor) SQLStatement(com.alibaba.druid.sql.ast.SQLStatement) DbType(com.alibaba.druid.DbType)

Example 5 with JSON

use of com.alibaba.fastjson2.JSON in project witsTalk by XinSin-top.

the class ChatFrameHandler method channelRead0.

@Override
protected void channelRead0(ChannelHandlerContext channelHandlerContext, TextWebSocketFrame textWebSocketFrame) {
    /*
        此方法会在收到消息时调用
         */
    // 
    session = ChatStart.factory.openSession();
    chatDao = session.getMapper(ChatDao.class);
    // 获取传输通道
    Channel channel = channelHandlerContext.channel();
    // 获取通道ID
    ChannelId id = channel.id();
    // 获取消息文本内容
    String data = textWebSocketFrame.text();
    // 日志
    log.debug("receive message {} ip = {} id = {}", data, channel.remoteAddress().toString(), id.asShortText());
    // 将消息转换为json
    JSONObject json;
    try {
        json = JSON.parseObject(data);
    } catch (JSONException e) {
        // 打印错误
        e.printStackTrace();
        // 将syntax error发回至客户端
        sendMessage(id, "syntax error");
        return;
    }
    // 获取进行的操作
    String operating = json.getString("op");
    // 获取操作的参数
    JSONObject args = json.getJSONObject("args");
    String loginCommand = "login";
    String sendCommand = "send";
    String getMessageCommand = "get";
    String getMessageCountCommand = "count";
    String recallMessageCommand = "recall";
    // 登录操作
    if (Objects.equals(operating, loginCommand)) {
        Boolean r = JwtTokenUtils.isRight(args.getString("token"));
        log.debug("logon,r = {} ip = {} id = {}", r, channel.remoteAddress().toString(), id.asShortText());
        loginTable.put(id, r);
        sendMessage(id, r.toString());
    } else if (loginTable.get(id)) {
        // 如果操作为send
        if (Objects.equals(operating, sendCommand)) {
            // 获取发送者
            String sender = args.getString("sender");
            // 获取发送内容
            String content = args.getString("content");
            // 获取发送的类型
            String type = args.getString("type");
            // 日志
            log.info("sendMessage,sender = {} content = {} type = {}", sender, content, type);
            // 定义消息对象
            Message message = new Message(content, sender, type);
            // Dao层发送消息
            chatDao.sendMessage(message);
            session.commit();
            // 获取用户头像
            String b64 = chatDao.getUserHeadPortrait(sender);
            message.setBase64(b64);
            // 广播此消息
            String rawJson = JSON.toJSONString(message);
            sendToAll(rawJson);
        } else // 如果操作为getMessage
        if (Objects.equals(operating, getMessageCommand)) {
            // 获取id最小值
            Integer min = args.getInteger("min");
            // 获取id最大值
            Integer max = args.getInteger("max");
            // 日志
            log.info("getMessage min = {} max = {} ip = {} id = {}", min, max, channel.remoteAddress(), id.asShortText());
            // 从数据库获取消息
            ArrayList<Message> messages = chatDao.getMessage(min, max);
            // todo 更改为双标查询获取头像
            // 将这些消息转换为json并返回给客户端
            sendMessage(id, JSON.toJSONString(messages));
        } else // 如果操作为getMessageCount
        if (Objects.equals(operating, getMessageCountCommand)) {
            // 日志
            log.info("getMessageCount");
            // 从数据库获取消息数量
            Integer count = chatDao.getCount().get(0);
            sendMessage(id, count);
        } else if (Objects.equals(operating, recallMessageCommand)) {
            int i = args.getInteger("id");
            Message message = new Message(i);
            log.info("Recall Message message={}", message);
            chatDao.recall(message);
            session.commit();
            HashMap<String, String> resp = new HashMap<>(10);
            resp.put("op", "recall");
            resp.put("id", String.valueOf(i));
            sendToAll(JSON.toJSONString(resp));
        }
    } else {
        sendMessage(id, "You are not login!");
    }
    session.close();
}
Also used : Message(cn.wzpmc.pojo.Message) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) HashMap(java.util.HashMap) JSONException(com.alibaba.fastjson2.JSONException) JSONObject(com.alibaba.fastjson2.JSONObject) ChatDao(cn.wzpmc.dao.ChatDao)

Aggregations

JSONArray (com.alibaba.fastjson2.JSONArray)8 DbType (com.alibaba.druid.DbType)7 SQLStatement (com.alibaba.druid.sql.ast.SQLStatement)7 SQLStatementParser (com.alibaba.druid.sql.parser.SQLStatementParser)7 SQLASTOutputVisitor (com.alibaba.druid.sql.visitor.SQLASTOutputVisitor)7 ArrayList (java.util.ArrayList)7 JSONObject (com.alibaba.fastjson2.JSONObject)4 Test (org.junit.Test)2 SpringBootTest (org.springframework.boot.test.context.SpringBootTest)2 ChatDao (cn.wzpmc.dao.ChatDao)1 Message (cn.wzpmc.pojo.Message)1 JSONException (com.alibaba.fastjson2.JSONException)1 HashMap (java.util.HashMap)1 ConcurrentHashMap (java.util.concurrent.ConcurrentHashMap)1 JSON (org.brapi.client.v2.JSON)1