首页 > 编程语言 >java练习:json字符串转map、arrayList

java练习:json字符串转map、arrayList

时间:2023-12-02 14:11:06浏览次数:54  
标签:map java msgContentBody arrayList content time import remindRule eduID

使用依赖包:

<dependency>
            <groupId>com.alibaba.fastjson2</groupId>
            <artifactId>fastjson2</artifactId>
            <version>2.0.0</version>
        </dependency>

获取数据:

package com.example.myblog.service.impl;

import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.alibaba.fastjson2.JSONArray;

import com.example.myblog.dao.MsgMapper;
import com.example.myblog.entity.MsgBody;
import com.example.myblog.service.MsgServe;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.UUID;

@Service
public class MsgServeImpl implements MsgServe {
    @Autowired
    @Resource
    private MsgMapper msgMapper;

    @Override
    public void saveMsg(MsgBody msgBody) {
        msgBody.setEventId(UUID.randomUUID().toString().replace("-",""));
        msgMapper.saveMsg(msgBody);
    }

    @Override
    public ArrayList<MsgBody> getMsg() {
        ArrayList<MsgBody> list =msgMapper.getMsg();

        for (int i = 0; i < list.size(); i++) {
            String content = list.get(i).getContent();
            JSONObject msgContentBody = JSONObject.parseObject(content,null);

            String remindRule = String.valueOf(msgContentBody.get("remindRule"));
            JSONArray remind = JSON.parseArray(remindRule);
            msgContentBody.put("remindArrayRule",remind);

            String eduID = String.valueOf(msgContentBody.get("eduID"));
            if(!"".equals(eduID)){
                msgContentBody.put("eduArray",eduID.split(","));
            }else{
                msgContentBody.put("eduArray",new ArrayList<String>());
            }
            list.get(i).setMsgContentBody(msgContentBody);
        }

        return list;
    }
}

保存的数据格式:

{
    "content": "{\"reminderAudio\":\"/resource/audio/edArticle/6f60e73abd0d47b4b679e823e1ec335a.mp3\",\"contentPath\":\"/resource/audio/edArticle/6f60e73abd0d47b4b679e823e1ec335a.mp3\",\"msgType\":\"宣教推送消息\",\"isBroadcasting\":0,\"isGenerateAudio\":1,\"type\":3,\"onlyFlag\":\"PUSH-EDU-MSG\",\"remindRule\":\"[{\\\"time\\\":1},{\\\"time\\\":\\\"2\\\"}]\",\"content\":\"手术手术手术手术手术。\",\"broadcastName\":\"宣教推送消息\",\"eduID\":\"933bce53ba3645f89747351d9e193ce0,a6a04b9516c64876a438e4e38dfca609\",operationTime:\"2023-12-01 15:30:00\"}"
}

返回结果:

{
    "eventId": "7411c79dcd084812bef5fbd8262849de",
    "patientId": "patientId111",
    "content": "{\"reminderAudio\":\"/resource/audio/edArticle/6f60e73abd0d47b4b679e823e1ec335a.mp3\",\"contentPath\":\"/resource/audio/edArticle/6f60e73abd0d47b4b679e823e1ec335a.mp3\",\"msgType\":\"宣教推送消息\",\"isBroadcasting\":0,\"isGenerateAudio\":1,\"type\":3,\"onlyFlag\":\"PUSH-EDU-MSG\",\"remindRule\":\"[{\\\"time\\\":1},{\\\"time\\\":\\\"2\\\"}]\",\"content\":\"手术手术手术手术手术。\",\"broadcastName\":\"宣教推送消息\",\"eduID\":\"933bce53ba3645f89747351d9e193ce0,a6a04b9516c64876a438e4e38dfca609\",operationTime:\"2023-12-01 15:30:00\"}",
    "msgContentBody": {
        "reminderAudio": "/resource/audio/edArticle/6f60e73abd0d47b4b679e823e1ec335a.mp3",
        "contentPath": "/resource/audio/edArticle/6f60e73abd0d47b4b679e823e1ec335a.mp3",
        "msgType": "宣教推送消息",
        "isBroadcasting": 0,
        "isGenerateAudio": 1,
        "type": 3,
        "onlyFlag": "PUSH-EDU-MSG",
        "remindRule": "[{\"time\":1},{\"time\":\"2\"}]",
        "content": "手术手术手术手术手术。",
        "broadcastName": "宣教推送消息",
        "eduID": "933bce53ba3645f89747351d9e193ce0,a6a04b9516c64876a438e4e38dfca609",
        "operationTime": "2023-12-01 15:30:00",
        "remindArray": [
            {
                "time": 1
            },
            {
                "time": "2"
            }
        ],
        "eduArray": [
            "933bce53ba3645f89747351d9e193ce0",
            "a6a04b9516c64876a438e4e38dfca609"
        ]
    },
    "eventProfessionType": "PUSH-EDU-MSG",
    "nowTime": "2023-11-30 11:30:24"
}

其中,将content解析为msgContentBody,content里面的remindRule解析为remindArray,eduID解析为eduArray

 

业务场景整体描述:

定义好多个消息规则,一群人中有人触发了规则,发一条消息,消息有重复提醒机制【remindRule】,触发的消息保存数据库。

重复提醒逻辑:

定时遍历这个数据库,修改【remindRule】,当【remindRule[0].time】变为0,则发消息再次提醒删除【remindRule[0]】,否则【remindRule[0].time-10】

【remindRule.length===0】说明重复提醒完毕,删除这条消息。

已读提醒逻辑:

【eduID】记录多个文章id,循环中根据文章id和人员id获取是否已读,已读则删除【eduID】中这条文章id

【eduID】变为空,说明阅读完成,没必要再次提醒,删除这条消息。

标签:map,java,msgContentBody,arrayList,content,time,import,remindRule,eduID
From: https://www.cnblogs.com/pangchunlei/p/17871539.html

相关文章

  • Java零基础入门-输出
    前言Java是一种面向对象的编程语言,广泛用于开发各种应用程序。入门Java编程需要了解基本的语法规则和常见的编程思路,本文将从输出入手,介绍Java语言的基本语法和使用方法,为初学者提供帮助。摘要本文主要介绍Java语言的输出功能,包括各种输出方法的基本语法和使用方法,以及Java语言......
  • Java流Stream使用详解(中)
    一、Stream流的中间方法名称说明Stream<T> filter(Predicate<?superT> predicate)过滤Stream<T> limit(longmaxSize)获取前几个元素Stream<T> skip(longn)跳过前几个元素Stream<T> distinct()元素去重,依赖(hashCode和equals方法)static<T> Stream<T> concat(Stream......
  • Java预科
    Java预科一、学会用MarkDown语法在文本编辑器Typora上总结和思考学过的知识发到博客上面。​博客推荐使用博客园,直接搜typora下载即可。新建文件夹“MarkDown学习”☞新建文本.txt☞改文件后缀xxx.md即可。二、MarkDown语法,先学会语法,再学快捷键。(标题)一个“#”为......
  • 走进Java
    day1走进Java对于新手零基础的我想对自己说:​对于零基础的人学习Java这件事来说其实任何困难都不怕,比如总有人会问英语不好/理解慢/现在学晚不晚,其实持之以恒才是最关键的!没有坚持,一切学习都是白谈。​坚持的重要性不止在学习Java这条路上尤为关键,在其他方面的学习也是一样......
  • 初始Java
    初始Java1.编程语言发展史机器语言汇编语言高级语言2.Java发展史3.Java体系结构JavaSEJavaEEJavaME4.Java的特性和优势跨平台/可移植性安全性面向对象简单性高性能分布式多线程健壮性5.Java核心机制_垃圾收集机制1.不再使......
  • Java并发(十六)----线程八锁
    所谓的“线程八锁”其实就是看synchronized锁住的是哪个对象情况1:12或21都是有可能的,就看cpu先调度哪个线程@Slf4j(topic="c.Number")classNumber{  publicsynchronizedvoida(){    log.debug("1"); }  publicsynchronizedvoidb(){......
  • 【JavaSE】一些常见API(Object、Objects、Math、System、BigDecimal、包装类、Arrays)
    Object类Object类介绍toString方法直接println(对象名),默认会自动调用(对象名.toString),而.toString默认是返回地址信息->全类名(包名+类名)@地址的十六进制哈希值,因此如果println(对象名)控制台没有输出地址值,说明该类一定重写了Object类的toString方法,比如String类和Arr......
  • Java学习之路(十)
    Java学习之路(十)1、接口1.1、信息管理系统集合改进(应用)使用数组容器的弊端容器长度是固定的,不能根据添加功能自动增长没有提供用于赠删改查的方法优化步骤创建新的StudentDao类,OtherStudentDao创建ArrayList集合容器对象OtherStudentDao中的方法声明,需要跟......
  • 集合框架(三)ArrayList的常见使用
    ArrayList是什么?ArrayList是Java集合中的数组列表,实现了List接口,是用来存储数据的容器之一,底层的数据结构是数组。 ArrayList有什么特点?有序:按照顺序添加元素不唯一:同一元素可以存放多次查找和访问速度较快,增删元素较慢 ArrayList和LinkedList的区别有哪些?数据机构:Arr......
  • java集合框架(二)之LinkedList的常见使用
     常用的方法定义LinkedList对象  新增  删除 获取元素 修改 ......