json框架(json框架对比)

http://www.itjxue.com  2023-01-27 20:21  来源:未知  点击次数: 

如何解析JSON使用Play框架

因为最近在编写scala程序,就发现了使用play框架来方便的解析json数据。

一. 官网的解释是这样的:

1. 解析类库位于 play.api.libs.json._ 包。

2. 可以解析json字符串,可以创建json字符串。基于java的JSON库和jackson。

3. 可以在java和scala之间共享jackson底层库。

4. 可以享受play框架提供的额外的类型安全和函数编程的体验。

5. JSON is an AST (Abstract Syntax Tree).

阿里巴巴的json解析框架怎么用

说起Json 解析,有很多方法,无论是出自Google 的Gson也好,还是来自其他的某某,想必大家都很熟悉。今日在github上闲逛,偶遇 一 json 解析库,看起来很不错,据说是目前最快的解析JOSN 方案。该东东为何神器,他就是来自于阿里团队的 fastjson.

为了方便起见,参考如下代码。

用maven 的同学就方便多了,直接双击打开你的pom.xml 文件,添加如下依赖

dependency

groupIdcom.alibaba/groupId

artifactIdfastjson/artifactId

version1.1.36/version

/dependency

构建一下就OK了。

下面来具体看看:

ENCODE:

import com.alibaba.fastjson.JSON;

Group group = new Group();

group.setId(0L);

group.setName("admin");

User guestUser = new User();

guestUser.setId(2L);

guestUser.setName("guest");

User rootUser = new User();

rootUser.setId(3L);

rootUser.setName("root");

group.getUsers().add(guestUser);

group.getUsers().add(rootUser);

String jsonString = JSON.toJSONString(group);

System.out.println(jsonString);

jackson和json的区别

ackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json、xml转换成Java对象。

前面有介绍过json-lib这个框架,在线博文:

相比json-lib框架,Jackson所依赖的jar包较少,简单易用并且性能也要相对高些。

而且Jackson社区相对比较活跃,更新速度也比较快。

postman发送json数据 ,服务端接收json数据

简介:

? ?postman是一个很好的http模拟器,在测试rest服务时是很好用的工具,可以发送get、post、put等各种请求。

发送json的具体步骤:

1、选择post请求方式,同时将header的content-type设置为application/json

2、设置body的编码方式为raw,application/json, ?raw是发送纯文本,不包含任何空格的编码方式

3、往下滚动鼠标就能看到返回结果。

后端接收方式

我这边用的是springboot

注意:

@ResponseBody 注解的使用:映射请求体

JsonNode 使用jackson框架,也可以使用其他的json框架或者bean

使用spray json的一点小经验

java里面的fastjson,gson,和Jackson是我最熟悉的json序列化框架,用起来没什么问题,接触了scala之后,我看到很多项目使用sprayjson,尤其是akka相关的项目,使用特别多,因为刚接触scala,它的伴生对象和implicit隐式语义会让新手使用spray json的时候,有一点点困惑。

简单说就是json字符串和对象的互转,java里面的对象一般是指bean,有的也叫pojo,scala里面一般指case class的对象。

还有很多框架不提供到bean的转换,而是直接转成JsonObject和JsonArray对象,有的同时支持,比如fastJson,spray json 同样也都支持,基础类叫做JsonValue,具体的还有JSNumber、JSString、JSBoolean等更详细的数据类型,原理其实跟其它java的json框架没有太大的区别

一个json串,调用 parseJson 方法

一个scala对象调用 toJson 方法

都可以转化为一个spray json的语法树对象

这个语法树对象可以打印成json字符串,也可以转化为一个scala对象

转为json字符串:

prettyPrint // or .compactPrint

转为对象 val myObject = jsonAst.convertTo[MyObjectType]

具体的参考这个文档即可

调用方式都是死的,无非是convertTo,parseJson,toJson,但是具体怎么转,是需要协议的,框架本身内置了一大堆协议,用于scala基础对象类型的转化,而我们自定义的case class或者class需要我们自己实现转化的方式,这个是我们需要编码的地方。

对于没有显示声明伴生对象的情况,sprayjson给你准备了很多 jsonFormatX,x对应你的case class参数个数,比如

如果有22个参数,那就是jsonFormat22,这些框架提供的jsonFormatX使用的话,需要导入spray.json.DefaultJsonProtocol_,这也是scala隐式的特点

如果显示声明了伴生对象,那么就不能直接 jsonFormat4(Color) 这样写了,上面这个例子里,如果声明了Color伴生对象,那么 jsonFormat4(Color) 里的Color会被理解成Color对象,这时候需要我们提供伴生对象的apply方法,要写成这样

普通class即非case class的情况,多数用到RootJsonFormat,这时候需要我们重写read,write方法,即JSValue和class对象的转换关系

例如:

更复杂的用法,后面陆续补充

(责任编辑:IT教学网)

更多

推荐Illustrator教程文章