实现一个解析JSON字符串为JAVA对象的函数,不使用现成开源解析工具

模拟实现一个解析JSON字符串为JAVA对象的函数,要求入参为String字符串,返回为List,其中Alert的成员变量为id,app,ip,类型均为String型。不可使用现成的开源解析工具

提示:Java面试题
在这里插入图片描述



前言

这里我解析json字符串是使用正则表达式来完成


一、正则表达式

使用正则表达式分解字符串,使用以下方法来解析

//将给定的正则表达式编译为模式。参数:regex–要编译的表达式
public static Pattern compile(String regex)
//创建一个匹配器,该匹配器将根据此模式匹配给定的输入。参数:input–要匹配的字符序列
public Matcher matcher(CharSequence input)
//Matcher类,如果且仅当输入序列的子序列与匹配器的模式匹配,则为true
public boolean find()

二、完整代码如下

1.主要代码

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/*
模拟实现一个解析JSON字符串为JAVA对象的函数,要求入参为String字符串,返回为List<Alert>,其中Alert的成员变量为id,app,ip,类型均为String型。不可使用现成的开源解析工具
 */
public class StringToJson {
    public static List<Alert> StringToJson(String jsonStr){
        //正则表达式,要匹配的模式"{.*}",'{'的unicode字符为\u007B
        Pattern pattern = Pattern.compile("\\u007B.*?}");
        //输入要匹配的字符
        Matcher matcher = pattern.matcher(jsonStr);
        int i =0;
        List<Alert> list = new ArrayList<>();
        while (matcher.find()){
            //用map来接收解析字符
            Map<String, String> map = new HashMap<>();
            //把'{'和'}'替换掉
            String group = matcher.group().toString().replace("{","").replace("}","");
            //根据','来分割
            String[] split1 = group.split(",");
            Alert alert = new Alert();
            //根据','遍历
            for (String s : split1){
                //根据':'分割
                String[] split2 = s.split(":");
                //map接收数据
                map.put(split2[0].toString().replace("\"",""),split2[1].toString().replace("\"",""));  
            }
            alert.setId(map.get("id"));
            alert.setApp(map.get("app"));
            alert.setIp(map.get("ip"));
            list.add(alert);
        }
        System.out.println(list);
        return list;
    }
    public static void main(String[] args) {
        String json = "[{\"id\":\"3\",\"app\":\"F-AMC\",\"ip\":\"1.1.1.1\"},{\"id\":\"2\",\"app\":\"F-OSCM\",\"ip\":\"2.2.2.2\"},{\"id\":\"1\",\"app\":\"F-PCAP\",\"ip\":\"3.3.3.3\"}]";
        StringToJson(json);
    }
}

2.Alert类

public class Alert {
    private String id;
    private String app;
    private String ip;
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getApp() {
        return app;
    }
    public void setApp(String app) {
        this.app = app;
    }
    public String getIp() {
        return ip;
    }
    public void setIp(String ip) {
        this.ip = ip;
    }
    @Override
    public String toString() {
        return "Alert{" +
                "id='" + id + '\'' +
                ", app='" + app + '\'' +
                ", ip='" + ip + '\'' +
                '}';
    }
}

总结

以上就是我解析json字符串的方法,这里仅仅简单介绍了Pattern类和Matcher类的使用。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值