多年以前一直用XML,xml格式几乎成了当时一种传输数据的标准,soap中,甚至http中皆传xml。直到有一天json出现了。
有关xml与json对比的文章,网上一大堆,个人认为实在没有必要。因为这是两个不同的东西。都有用武之地。
xml的定义《维基百科https://zh.wikipedia.org/wiki/XML》:
可扩展标记语言(英语:Extensible Markup Language,简称:XML),是一种标记语言。标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种信息的文章等。如何定义这些标记,既可以选择国际通用的标记语言,比如HTML,也可以使用像XML这样由相关人士自由决定的标记语言,这就是语言的可扩展性。XML是从标准通用标记语言(SGML)中简化修改出来的。它主要用到的有可扩展标记语言、可扩展样式语言(XSL)、XBRL和XPath等。
json的定义《维基百科https://zh.wikipedia.org/wiki/JSON》:
JSON(JavaScript Object Notation)是一种由道格拉斯·克罗克福特构想设计、轻量级的数据交换语言,以文字为基础,且易于让人阅读。尽管JSON是Javascript的一个子集,但JSON是独立于语言的文本格式,并且采用了类似于C语言家族的一些习惯。
JSON 数据格式与语言无关,脱胎于 JavaScript,但目前很多编程语言都支持 JSON 格式数据的生成和解析。JSON 的官方 MIME 类型是 application/json
,文件扩展名是 .json
。
从定义即可看出,xml强调的是语言,json强调的是数据格式。
好了重点说下我们在json中常用的需求吧,目前大部分都是使用的fastjson。
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.20</version>
</dependency>
我们常用的需求及用法如下:
json字符串-POJO对象
JSONObject jsonObject = JSON.parseObject(json);
POJO对象-json字符串
JSONObject jsonMsg = new JSONObject();
jsonMsg.put("content",content);
jsonMsg.put("orderId",orderId);
String jsonResult = JSONObject.toJSONString(jsonMsg);
集合-json字符串
这类常见于,我将集合序列化之后放入redis
redisUtil.set(String.valueOf(venderId), JSON.toJSONString(list));
json字符串-集合
从redis中取出,反序列话成对象
String value = redisUtil.get(String.valueOf(venderId));
list =JSON.parseArray(value, AnycallVender.class);
这些需求fastjson都能轻松的处理,还有更多的用法,可以参考:https://github.com/alibaba/fastjson/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98