wast 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
wast 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
wast 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 Apache
开发语言 Java
操作系统 跨平台
软件类型 开源软件
所属分类 开发工具Java开发工具
开源组织
地区 不详
投 递 者 wycst
适用人群 未知
收录时间 2022-09-27

软件简介

wast 是一个轻量级且高性能 java 语言开发框架和工具包,集成了最快的json库之一和最快的yaml 解析库,代码轻量,无任何依赖。

 

功能

  1. 内置json模块在性能评测上远远超过曾经的fastjson和jackson,即使是和fastjson2的最新版本性能评测中也能占据明显的领先优势;
  2. 内置yaml解析库性能是snakeyaml的5-20倍;
  3. 内置表达式引擎解析性能比现有的spel高0.5倍左右;

JSON使用方法

// 序列化
Map map = new HashMap();
map.put("msg", "hello, light json !");
String result = JSON.toJsonString(map);

// 序列化到文件
Map map = new HashMap();
map.put("msg", "hello, light json !");
JSON.writeJsonTo(map, new File("/tmp/test.json"));

// 格式化输出
Map map = new HashMap();
map.put("name", "zhangsan");
map.put("msg", "hello, light json !");
JSON.toJsonString(map, WriteOption.FormatOut);

// 反序列化map
String json = "{\"msg\":\"hello, light json !\",\"name\":\"zhangsan\"}";
Map map = (Map) JSON.parse(json);
System.out.println(map);

// 反序列化到指定类型
String json = "{\"msg\":\"hello, light json !\",\"name\":\"zhangsan\"}";
Map map = JSON.parseObject(json, Map.class);
System.out.println(map);


//  IO流读取解析
Map result = null;
    
// 1 读取网络资源 GET
result = JSON.read(new URL("https://developer.aliyun.com/artifact/aliyunMaven/searchArtifactByGav?groupId=spring&artifactId=&version=&repoId=all&_input_charset=utf-8"), Map.class);
    
// 2 读取输入流
InputStream inputStream = InputStreamTest.class.getResourceAsStream("/sample.json");
result = JSON.read(inputStream, Map.class);
    
// 3 读取文件
result = JSON.read(new File("/tmp/smaple.json"), Map.class);

YAML使用方法

    // yaml字符串
    String yamlStr = StringUtils.fromResource("/yaml/t2.yaml");
    
    // 读取文档
    YamlDocument yamlDoc = YamlDocument.parse(yamlStr);
    
    // 转换为properties
    Properties properties = yamlDoc.toProperties();
    System.out.println(properties);
    
    // 转换为map
    yamlDoc.toMap();
    
    // 转化为指定bean
    YamlTest bean = yamlDoc.toEntity(YamlTest.class);
    
    // 获取根节点
    YamlNode yamlRoot = yamlDoc.getRoot();
    
    // 查找node
    YamlNode nameNode = yamlRoot.get("/metadata/name");
    
    // 获取/metadata/name
    String metadataName = yamlRoot.getPathValue("/metadata/name", String.class);
    // 或者 nameNode.getValue();
    System.out.println(" metadataName " + metadataName);
    
    // 修改
    yamlRoot.setPathValue("/metadata/name", "this is new Value ");
    
    String newMetadataName = (String) nameNode.getValue();
    System.out.println(newMetadataName.equals("this is new Value "));
    
    // 反向序列化生成yaml字符串
    System.out.println(yamlDoc.toYamlString());
    
    // 输出到文件
    yamlDoc.writeTo(new File("/tmp/test.yaml"));

表达式引擎

// 直接运行
Expression.eval("1+1");  // 输出2
Expression.eval("1+1+'a'");  // 输出2a

Map map = new HashMap();
map.put("a", 1);
map.put("b", 2);
map.put("c", 3);
Expression.eval("a+b+c",map);  // 输出6

// 解析运行
Map map = new HashMap();
map.put("a", 1);
map.put("b", 2);
map.put("c", 3);
Expression varExpr = Expression.parse("a + b + c");  // 只需要解析一次
varExpr.evaluate(map);     // 输出6

map.put("c", 30);
varExpr.evaluate(map);     // 输出33

// 函数使用
Map context = new HashMap();
context.put("tip", "1 ");
context.put("name", "zhangsan, %s");
context.put("msg", "hello");
context.put("type", 1);
context.put("a", 1);
context.put("b", 12);
context.put("c", 111);
context.put("B6_AvgCpuUsed", 1.0);
context.put("B5_AvgCpuUsed", 2.0);
context.put("B4_AvgCpuUsed", 3.0);
context.put("vars", new String[] {"hello"});

EvaluateEnvironment evaluateEnvironment = EvaluateEnvironment.create(context);
evaluateEnvironment.registerStaticMethods(Math.class, String.class);
evaluateEnvironment.registerFunction("min", new ExprFunction<Object, Number>() {
    @Override
    public Number call(Object... params) {
        Arrays.sort(params);
        return (Number) params[params.length - 1];
    }
});


System.out.println( Expression.eval("@min(@sum(a,b,c), 50, 125, 2, -11)", evaluateEnvironment));
System.out.println( Expression.eval("@max(@sum(a,b,c), 50, 125, 55, 152)", evaluateEnvironment));


展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论

点击引领话题📣 发布并加入讨论🔥
发表了资讯
02/08 00:30

高性能 java 库 wast - JSONPath 性能测试

关于JSONPath,很早之前本人实现了一个按需解析模型JSONNode,路径规则参考xpath(不支持递归搜索),后来才知道有个JSONPath规范,路径规则懒得改了,几个月前做JSON优化,狠心优化了一个版本,大部分常用的JSONPath功能都已支持包括递归,性能也大幅度提升(主要依赖于JSON优化带来的提升)。 早前和fastjson2对比的测试地址: xiaoch0209/wast-jmh-test 本次测试加入了另一个高性能JSONPath库snack3参与测试 测试环境: window1...

7
2
发表了资讯
01/22 18:00

高性能 Java 工具库 wast v0.0.22 发布

WAST 是一个高性能 Java 工具集库包,包括 JSON、YAML、CSV、HttpClient、JDBC 和 EL 引擎. 源码地址 gitee: https://gitee.com/xiaoch0209/wast github: https://github.com/wycst/wast 性能测试: gitee: https://gitee.com/xiaoch0209/wast-jmh-test github: https://github.com/wycst/wast-jmh-test JSON 与 simdjson-java 对比: JSON 性能测试之二 - wastjson 每秒 6GB 解析速度完胜 simdjson-java 表达式性能测试: W...

0
7
发表了资讯
01/03 19:25

wast v0.0.21 发布,高性能 Java 库

wast v0.0.21 已经发布,高性能 Java 库。 此版本更新内容包括: jdbc 控制某一个实体类不打印 sql; 优化 EL 表达式解析模式下的运行性能(pojo 作为变量上下文时性能大幅度提升); 提升个别场景下 double 解析性能; JSONReader 支持 Pojo 类型的短路读取解析; 修复 JSON 序列化在启用 JIT 模式下写入字段 key 错误问题; 详情查看:https://gitee.com/xiaoch0209/wast/releases/v0.0.21...

0
2
发表了资讯
01/03 00:11

高性能 Java 工具库 wast v0.0.21 发布

WAST 是一个高性能 Java 工具集库包,包括 JSON、YAML、CSV、HttpClient、JDBC 和 EL 引擎. 源码地址 gitee: https://gitee.com/xiaoch0209/wast github: https://github.com/wycst/wast 性能测试: gitee: https://gitee.com/xiaoch0209/wast-jmh-test github: https://github.com/wycst/wast-jmh-test JSON与simdjson-java对比: JSON 性能测试之二 - wastjson 每秒 6GB 解析速度完胜 simdjson-java 表达式性能测试: WastE...

0
6
发表了资讯
2024/11/27 14:34

JSON 性能测试之二 - wastjson 每秒 6GB 解析速度完胜 simdjson-java!

前一篇JSON性能测试对比Fastjson2和DslJson,有评论提到和simdjson-java对比,那就测试走起. 说下simdjson-java这个库,之前也听说过,由于早前官网测试用的文本非常离谱,而且依赖JDK18+就没怎么关注,现在只要搜索simdjson(c++)基本上就能看到宣传最多的就是每秒千兆解析超越同类C++库甚至25倍的都有,不确定simdjson和simdjson-java性能差异有多大,下面只和simdjson-java做下对比测试。 测试环境: openJdk21 + window10 + ...

5
3
发表了资讯
2024/11/27 09:10

wast v0.0.19 发布

简介 WAST 是一个高性能 Java 工具集库包,包括 JSON、YAML、CSV、HttpClient、JDBC 和 EL 引擎. 性能特色 JSON 性能比当前所有开源 JSON 库应该都要快,包括当前性能强势的 Fastjson2. El 表达式引擎在性能上同样远超其他开源的 Java 库. YAML 模块性能大概是 snakeyaml 的 5-20 倍 源码地址 gitee: https://gitee.com/xiaoch0209/wast github: https://github.com/wycst/wast v0.0.19 更新内容: El表达式支持内嵌子表达式(...

0
2
发表了资讯
2024/11/23 09:12

JSON 性能测试 - WastJson 性能也很快

简介 WAST 是一个高性能 Java 工具集库包,包括 JSON、YAML、CSV、HttpClient、JDBC 和 EL 引擎. 上篇测试了WastEl表达式引擎的性能,本篇测试下Wast下面JSON模块性能,选取当前性能最快的Fastjson2和DslJson针对实体类的序列化和反序列化做下对比测试. maven 依赖截止当前最新版本 <dependency> <groupId>com.alibaba.fastjson2</groupId> <artifactId>fastjson2</artifactId> ...

5
2
发表了资讯
2024/11/19 09:13

WastEl 表达式引擎性能测试 - 每秒千万次运算超强性能

简介 WAST是一个高性能Java工具集库包,包括JSON、YAML、CSV、HttpClient、JDBC和EL引擎. 下面是单独对WastEl性能测试,测试环境window10 处理器i5 JDK1.8 单线程 idea工具(服务器配置性能中等) maven依赖 <dependency> <groupId>io.github.wycst</groupId> <artifactId>wast</artifactId> <version>0.0.18</version> </dependency> <dependency> ...

9
5
发表了资讯
2024/11/16 16:42

wast v0.0.18 发布

简介 WAST是一个高性能Java工具集库包,包括JSON、YAML、CSV、HttpClient、JDBC和EL引擎. 早几年开源的一个java库,各个模块的性能能优化的都优化到了极致。 JSON性能比当前所有开源JSON库应该都要快,包括当前性能强势的Fastjson2. El表达式引擎在性能上同样远超其他开源的Java库(已知的所有开源库). YAML模块性能大概是snakeyaml的5-20倍(一直没有优化) 源码地址 gitee: https://gitee.com/xiaoch0209/wast github: ht...

0
3
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
发表了问答
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
暂无内容
0 评论
8 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部