JSON和XML真正在进行数据交换时候,它们存在的形式就是一个很长的字符串,这个字符串在网络 中传输或者存储于磁盘等介质中。在传输和存储之前需要把JSON对象转换成为字符串才能传输和存 储,这个过程称之为“编码”过程。接收方需要将接收到的字符串转换成为JSON对象,这个过程称之 为“解码”过程。编码和解码过程就像发电报时发送方把语言变成能够传输的符号,而接收时要将符号 转换成为能够看懂的语言。
流程图如下:
介绍一下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库。我这里推荐使用JSON-java库,你可以去这里下载,也可以去百度云下载链接https://pan.baidu.com/s/1qCfaI-d9vw-gs_COmjpxkg 密码:z1ld
下载完成之后,我们需要把报导入到IDEA:
第一步:创建org.json包
在src文件夹中右击new,选择Package,然后输入包名称org.json。
第二步:复制源代码文件
将下载好的JSON-java库里面的所有文件全部复制到org.json中
下面开始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