JSON相关知识点

来源:互联网 发布:快走丝编程教学视频 编辑:程序博客网 时间:2024/06/10 00:00

JSON是工作中经常会遇到的一种数据结构,下面来讲讲与他相关的一些知识点。


JSON简介:

JSON: JavaScript Object Notation(JavaScript 对象表示法)
JSON 是存储和交换文本信息的语法,类似 XML。
JSON 比 XML 更小、更快,更易解析。


JSONObject与JSONArray的使用:

Json有两种结构:JSONObject与JSONArray。
对象结构以”{”大括号开始,以”}”大括号结束
数组结构以”[”开始,”]”结束,中间以逗号区分,每一个逗号分割开一个对象。[{“1”,”2”},{“3”,”4”}],类似数据里面包了N个list或jsonobject。

类型的相互转化:

jsonobject转化成字符串:可以通过JSONObject.toJSONString方法
string转化为class对象:可以通过JSONObject.parseObject(str,xxDo.class)转换成DO的形式
string转化为jsonarray:
通过JSONObject.parseArray(str)转化为jsonarray类型,然后通过get(i)获取每个list。
string 转json:
JSONObject jsonObj = JSONObject.parseObject(jsonString);


fastjson简介及用法:

阿里巴巴FastJson是一个Json处理工具包,包括“序列化”和“反序列化”两部分,它具备如下特征:
速度最快,测试表明,fastjson具有极快的性能,超越任其他的Java Json parser。包括自称最快的JackJson;
功能强大,完全支持Java Bean、集合、Map、日期、Enum,支持范型,支持自省;无依赖,能够直接运行在Java SE 5.0以上版本;支持Android、开源 。

引入依赖:
         <dependency>            <groupId>com.alibaba</groupId>            <artifactId>fastjson</artifactId>            <version>1.2.4</version>        </dependency>
fastjson支持序列化及反序列化:

序列化是指从java对象转换到json字符串格式过程。
反序列化只指从json字符串转换到java对象的过程。
核心都是调用以下列举的一些方法:

public static final JSONObject parseObject(String text); // 把JSON文本转化成JSONObject    public static final  T parseObject(String text, Class clazz); // 把JSON文本转化为JavaBean public static final JSONArray parseArray(String text); // 把JSON文本转化成JSONArray public static final  List parseArray(String text, Class clazz); //把JSON文本转化成JavaBean集合 public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本 public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本 public static final Object toJSON(Object javaObject); 将JavaBean转换为JSONObject或者JSONArray。

Demo:
         /** 将JSON字符串转换为JSON对象 **/          JSONObject json = JSON.parseObject(text)           /** 将JSON字符串转换为JavaBean对象 **/          User user = JSON.parseObject(text, User.class)          /** 将JavaBean对象转换为JSON字符串 **/          String jsonObject = JSON.toJSONString(user);  

jackson实现bean转成json语句

这里再介绍另一种方式实现bean转换json的方法,就是通过jackson的readValue方法。

        ObjectMapper mapper = new ObjectMapper();        ActItemDO actItemDO = null;        try {            actItemDO = mapper.readValue(json, ActItemDO.class);        } catch (Exception e) {            e.printStackTrace();        }

不过,我觉得还是fastjson提供的方法用法简单点,这里提供另一种思路仅供参考。