Java中JSON数据编码与解码

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 :[email protected]
 * @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 :[email protected]
 * @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

以上内容仅供参考学习,如有侵权请联系我删除!
如果这篇文章对您有帮助,左下角的大拇指就是对博主最大的鼓励。
您的鼓励就是博主最大的动力!

发布了69 篇原创文章 · 获赞 7 · 访问量 3316

猜你喜欢

转载自blog.csdn.net/weixin_45366499/article/details/104430473