Java中JSON数据编码与解码

简介: JSON和XML真正在进行数据交换时候,它们存在的形式就是一个很长的字符串,这个字符串在网络 中传输或者存储于磁盘等介质中。在传输和存储之前需要把JSON对象转换成为字符串才能传输和存 储,这个过程称之为“编码”过程。接收方需要将接收到的字符串转换成为JSON对象,这个过程称之 为“解码”过程。编码和解码过程就像发电报时发送方把语言变成能够传输的符号,而接收时要将符号 转换成为能够看懂的语言。

JSON和XML真正在进行数据交换时候,它们存在的形式就是一个很长的字符串,这个字符串在网络 中传输或者存储于磁盘等介质中。在传输和存储之前需要把JSON对象转换成为字符串才能传输和存 储,这个过程称之为“编码”过程。接收方需要将接收到的字符串转换成为JSON对象,这个过程称之 为“解码”过程。编码和解码过程就像发电报时发送方把语言变成能够传输的符号,而接收时要将符号 转换成为能够看懂的语言。


流程图如下:

10.png

介绍一下JSON对象与JSON字符串区别:

JSON对象:

var person={"name":"zhangsan","sex":"男","age":"24"}//json对象
alert(person.name);//zhangsan
alert(typeof person);//object

JSON字符串:

var person='{"name":"zhangsan","sex":"男","age":"24"}';//json字符串
alert(person);//{"name":"zhangsan","sex":"男","age":"24"}
alert(typeof person);//string

由于目前Java官方没有提供JSON编码和解码所需要的类库,所以需要使用第三方JSON库。


下载完成之后,我们需要把报导入到IDEA:

第一步:创建org.json包

在src文件夹中右击new,选择Package,然后输入包名称org.json。

15.png

第二步:复制源代码文件

将下载好的JSON-java库里面的所有文件全部复制到org.json中

16.png

17.png


下面开始JSON数据解码与编码

先看编码:

如果想获得如下这样JSON字符串:

{"a":[1,2,3],"name":"tony","age":30}

实现编码过程,参考代码如下:

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.Arrays;
import java.util.List;
/**
 * @author : 蔡政洁
 * @email :caizhengjie888@icloud.com
 * @date : 2020/2/20
 * @time : 10:01 下午
 */
//如果想得到JSON字符串{"a":[1,2,3],"name":"tony","age":30},要编码
public class HelloWorld {
    public static void main(String[] args) {
        try {
            JSONObject object = new JSONObject();
            object.put("name","tony");
            object.put("age",30);
//            第一种加入列表方式
//            List<Integer> integers = Arrays.asList(1,2,3);
//            object.put("a",integers);
//            第二种加入列表方式
            JSONArray jsonArray = new JSONArray();
            jsonArray.put(1).put(3);
            object.put("a",jsonArray);
//            编码完成
            System.out.println(object.toString());
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }
}

就可以得到上面的运行结果

再看解码:解码过程是编码反向操作,如果有如下JSON字符串

{"a":[1,2,3],"name":"tony","age":30}

JSON字符串解码成JSON对象或数组,参考代码如下:

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
/**
 * @author : 蔡政洁
 * @email :caizhengjie888@icloud.com
 * @date : 2020/2/20
 * @time : 11:17 下午
 */
//解码过程是编码的反向操作
public class HelloWorld {
    public static void main(String[] args) {
//       声明一个json字符串
        String jsonString = "{\"a\":[1,2,3],\"name\":\"tony\",\"age\":30}";
        try {
            JSONObject object = new JSONObject(jsonString);
            System.out.println(object);
            String name = object.getString("name");
            System.out.println("name : "+name);
            int age = object.getInt("age");
            System.out.println("age : "+age);
            JSONArray jsonArray = object.getJSONArray("a");
            int n1 = jsonArray.getInt(0);
            System.out.println("数组a的第一个元素:"+n1);
            int n2 = jsonArray.getInt(1);
            System.out.println("数组a的第二个元素:"+n1);
        }catch (JSONException e){
            e.printStackTrace();
        }
    }
}

运行结果:

{"a":[1,2,3],"name":"tony","age":30}
name : tony
age : 30
数组a的第一个元素:1
数组a的第二个元素:1


相关文章
|
1月前
|
JSON API 数据格式
淘宝拍立淘按图搜索API系列,json数据返回
淘宝拍立淘按图搜索API系列通过图像识别技术实现商品搜索功能,调用后返回的JSON数据包含商品标题、图片链接、价格、销量、相似度评分等核心字段,支持分页和详细商品信息展示。以下是该API接口返回的JSON数据示例及详细解析:
|
1月前
|
JSON 算法 API
Python采集淘宝商品评论API接口及JSON数据返回全程指南
Python采集淘宝商品评论API接口及JSON数据返回全程指南
|
1月前
|
JSON 中间件 Java
【GoGin】(3)Gin的数据渲染和中间件的使用:数据渲染、返回JSON、浅.JSON()源码、中间件、Next()方法
我们在正常注册中间件时,会打断原有的运行流程,但是你可以在中间件函数内部添加Next()方法,这样可以让原有的运行流程继续执行,当原有的运行流程结束后再回来执行中间件内部的内容。​ c.Writer.WriteHeaderNow()还会写入文本流中。可以看到使用next后,正常执行流程中并没有获得到中间件设置的值。接口还提供了一个可以修改ContentType的方法。判断了传入的状态码是否符合正确的状态码,并返回。在内部封装时,只是标注了不同的render类型。再看一下其他返回的类型;
158 3
|
1月前
|
JSON Java Go
【GoGin】(2)数据解析和绑定:结构体分析,包括JSON解析、form解析、URL解析,区分绑定的Bind方法
bind或bindXXX函数(后文中我们统一都叫bind函数)的作用就是将,以方便后续业务逻辑的处理。
265 3
|
1月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
143 1
|
1月前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
161 1
|
1月前
|
JSON API 数据安全/隐私保护
Python采集淘宝拍立淘按图搜索API接口及JSON数据返回全流程指南
通过以上流程,可实现淘宝拍立淘按图搜索的完整调用链路,并获取结构化的JSON商品数据,支撑电商比价、智能推荐等业务场景。
|
2月前
|
JSON 自然语言处理 监控
淘宝关键词搜索与商品详情API接口(JSON数据返回)
通过商品ID(num_iid)获取商品全量信息,包括SKU规格、库存、促销活动、卖家信息、详情页HTML等。
|
Java 开发者 Windows
Java 数据类型划分(字符型)|学习笔记
快速学习 Java 数据类型划分(字符型)
204 0
|
Java 开发者
Java 数据类型划分(整型类型)|学习笔记
快速学习 Java 数据类型划分(整型类型)
155 0