随机json生成器

最近要测试两款json解析器的性能, 需要生成不同结构的json, 上网看了下貌似没有, 就花半天撸了一个, 写个文章记录下.
代码在https://github.com/Mazexal/buildJson
核心代码:
private static String buildObjectBase(int length,int depthlevel){

    StringBuilder stringBuilder=new StringBuilder();
    stringBuilder.append("{");
    for(int i=0;i<length;i++){
        int num = getRandInt(5,20);
        stringBuilder.append("\"");
        stringBuilder.append(strBuild(num));
        stringBuilder.append("\"");
        num=getRandInt(5,20);
        stringBuilder.append(":");

        int choose=getRandInt(4,4);
        int tmp = getRandInt(3,4);
        if(depthlevel>5){
            choose=5;
        }
        switch (choose){
            case 0:
                depthlevel =depthlevel+1;
                stringBuilder.append(buildObjectBase(tmp,depthlevel+1));
                break;
            case 1:
                depthlevel =depthlevel+1;
                stringBuilder.append(buildArray(tmp,depthlevel+1));
                break;

            default:
                stringBuilder.append("\"");
                stringBuilder.append(strBuild(num));
                stringBuilder.append("\"");
                break;
        }
        if(i!=length-1){
            stringBuilder.append(",");
        }
    }
    stringBuilder.append("}");
    return (stringBuilder.toString());
}


private static String buildArray( int depth,int depthlevel){
    StringBuilder stringBuilder=new StringBuilder();
    stringBuilder.append("[");
    for(int i=0;i<depth;i++){
        int length =  getRandInt(5,12);
        stringBuilder.append(buildObjectBase(length,depthlevel+1));
        if(i!=depth-1){
            stringBuilder.append(",");
        }
    }
    stringBuilder.append("]");
    // stringBuilder.append(",");
    return stringBuilder.toString();
}

采用递归调用, 可以自由生成不同的结构.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,421评论 19 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 34,363评论 18 399
  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,865评论 0 33
  • 回溯算法 回溯法:也称为试探法,它并不考虑问题规模的大小,而是从问题的最明显的最小规模开始逐步求解出可能的答案,并...
    fredal阅读 13,975评论 0 89
  • 走进倜唐的第19号心灵馆 1 偶然在朋友圈看到一个远方的朋友发“结婚感言”,于是赶紧私信她:恭喜恭喜哈! 没想到,...
    倜唐阅读 607评论 2 2

友情链接更多精彩内容