JSONObject详解

Posted 北可

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSONObject详解相关的知识,希望对你有一定的参考价值。

介绍

1、JSONObject只是一种数据结构,可以理解为JSON格式的数据结构(key-value 结构),可以使用put方法给json对象添加元素。JSONObject可以很方便的转换成字符串,也可以很方便的把其他对象转换成JSONObject对象。

2、JSON(javascript Object Notation的首字母缩写)是一种轻量级数据交换格式,最常用于客户端 - 服务器通信。它既易于读/写,又与语言无关。JSON值可以是另一个JSON 对象,数组,数字,字符串,布尔值(true / false)或null。也是后端开发中经常要接触的一个一个类,将要数据封装成json然后传递给前端。

依赖

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.46</version>
</dependency>

1.**JSONObject继承自JSON ,JSON是Fastjson的一个主要类,常常需要调用JSON的两个方法: **

  • toJSONString(Object)【将指定的对象序列化成Json表示形式】
  • parseObject(String, Class)【将json反序列化为指定的Class模式】

2.JSONObject实现了Map,可见JSONObject是一个Map类型的数据结构,Map接口提供了很多操作map的方法,常用的增删改查。
3.JSONObject还实现了Cloneable, Serializable, InvocationHandler,说明JSONObject支持拷贝(并且JSONObject重写了clone方法),支持序列化与反序列化,InvocationHandler是通过一个代理实例零调用处理程序实现的接口,即标记使用Java动态代理机制。JDK文档指示:每个代理实例都有一个相关的调用处理程序。当一个方法是在一个代理实例调用,调用的方法进行编码并派遣其调用处理程序的invoke方法。

JSON Object 包含三个字段

1、serialVersionUID

(版本标识)是 Java 为每个序列化类产生的版本标识,可用来保证在反序列时,发送方发送的和接受方接收的是可兼容的对象。如果接收方接收的类的 serialVersionUID 与发送方发送的 serialVersionUID 不一致,进行反序列时会抛出 InvalidClassException。序列化的类可显式声明 serialVersionUID 的值 。当显式定义 serialVersionUID 的值时,Java 根据类的多个方面(具体可参考 Java 序列化规范)动态生成一个默认的 serialVersionUID 。尽管这样,还是建议你在每一个序列化的类中显式指定 serialVersionUID 的值,因为不同的 jdk 编译很可能会生成不同serialVersionUID 默认值,进而导致在反序列化时抛出 InvalidClassExceptions 异常。所以,为了保证在不同的 jdk 编译实现中,其 serialVersionUID 的值也一致,可序列化的类必须显式指定 serialVersionUID 的值。另外,serialVersionUID 的修饰符最好是 private,因为 serialVersionUID 不能被继承,所以建议使用 private 修饰 serialVersionUID 。

2、DEFAULT_INITIAL_CAPACITY

默认初始容量,大小为16

3、Map<String, Object> map

用于存储的的容器,JSONObject常用的两种类型,LinkedHashMap(有序)和HashMap类型。默认初始大小为16.

常用方法

  • containsValue(Object value): 判断JSONObject是否包含此value值
  • containsKey(Object key) 判断JSONObject是否包含此key值
  • get(Object key):通过key获取对应的key-value对象。底层是先调用Map的get方法获取对象,如果获取的对象为空并且key为数值型则转成字符串型再次调用Map的get方法。

文档参考:https://blog.csdn.net/Butterfly_resting/article/details/100053544

以上是关于JSONObject详解的主要内容,如果未能解决你的问题,请参考以下文章

JSONObject详解

JSONObject详解

详解JSONObject.parseObject和JSONObject.fromObject——Web网络系列学习笔记

net.sf.json方法使用详解

json to bean(JSONObject类详解)

JSONObject使用方法详解