json教程及json在Java中的使用

说明:

JSON是开发中最常用的一种数据交换格式,这里我将根据自己的学习以及开发经验来对json进行一些讲解,并介绍一下json在Java最常用的用法来与大家共同学习。

json简介

百度百科:

JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。它基于 ECMAScript 规范的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

什么是 JSON ?

JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)
JSON 是轻量级的文本数据交换格式
JSON 独立于语言 *
JSON 具有自我描述性,更易理解
* JSON 使用 JavaScript 语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言。

类似 XML

JSON 是纯文本
JSON 具有“自我描述性”(人类可读)
JSON 具有层级结构(值中存在值)
JSON 可通过 JavaScript 进行解析
JSON 数据可使用 AJAX 进行传输

相比 XML 的不同之处

没有结束标签
更短
读写的速度更快
能够使用内建的 JavaScript eval() 方法进行解析
使用数组
不使用保留字

JSON 语法

一个例子:

{
"student": [
{ "firstName":"Bill" , "lastName":"Gates" },
{ "firstName":"George" , "lastName":"Bush" },
{ "firstName":"Thomas" , "lastName":"Carter" }
]
}

JSON 语法规则

JSON 语法是 JavaScript 对象表示法语法的子集。
数据在名称/值对中
数据由逗号分隔
花括号保存对象
方括号保存数组

JSON 名称/值对

JSON 数据的书写格式是:名称/值对。
名称/值对包括字段名称(在双引号中),后面写一个冒号,然后是值:

"firstName" : "John"

这很容易理解,等价于这条 程序 语句:

firstName = "John"

JSON 值

JSON 值可以是:
数字(整数或浮点数)
字符串(在双引号中)
逻辑值(true 或 false)
数组(在方括号中)
对象(在花括号中)
null

JSON 对象

JSON 对象在花括号中书写:
对象可以包含多个名称/值对:

{ "firstName":"John" , "lastName":"Doe" }

这一点也容易理解,与这条 JavaScript 语句等价:

firstName = "John"
lastName = "Doe"

JSON 数组

JSON 数组在方括号中书写:
数组可包含多个对象:

{
"student": [
{ "firstName":"John" , "lastName":"Doe" },
{ "firstName":"Anna" , "lastName":"Smith" },
{ "firstName":"Peter" , "lastName":"Jones" }
]
}

在上面的例子中,对象 “student” 是包含三个对象的数组。每个对象代表一条关于某人(有姓和名)的记录。

json在Java中使用

首先,在JAVA中使用JSON需要引入 org.json 包(点击 这里 可以下载相应的JAR包!), 并在程序中引入相应的JSON类:

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

json使用时,首先在服务端将数据进行json封装:

//声明一个Hash对象并添加数据
 Map params =  new HashMap();
 params.put("username", username);
 params.put("user_json", user);
 //声明JSONArray对象并输入JSON字符串
 JSONArray array = JSONArray.fromObject(params);
 put.println(array.toString());

然后在前端进行数据的相应解析,也就是将json数据进行解析:

 //@description: 根据接收到的JSON字符串来解析字符串中所包含的数据和数据对象

  //接收到的JSON字符串
  String result = "[{\"username\": \"your name\", \"user_json\": {\"username\": \"your name\", \"nickname\": \"your nickname\"}}]";

  //根据字符串生成JSON对象
  JSONArray resultArray = new JSONArray(result);
  JSONObject resultObj = resultArray.optJSONObject(0);

 //获取数据项
 String username = resultObj.getString("username");

 //获取数据对象
 JSONObject user = resultObj.getJSONObject("user_json");
 String nickname = user.getString("nickname");

另外,关于json在Java中的使用最重要的就是几种数据格式之间的转化:

1、String 转换为JSON对象


 public class StringToJSON {
     public static void main(String[] args) throws JSONException{

         System.out.println("abc");
        //定义JSON字符串
        String jsonStr = "{\"id\": 2," + 
                " \"title\": \"json title\", " + 
                 "\"config\": {" +
                    "\"width\": 34," +
                    "\"height\": 35," +
                 "}, \"data\": [" +
                     "\"JAVA\", \"JavaScript\", \"PHP\"" +
                 "]}";

         //转换成为JSONObject对象
         JSONObject jsonObj = new JSONObject(jsonStr);

         //从JSONObject对象中获取数据
         JavaBean bean = new JavaBean();

        //根据属性名称获取int型数据;
         bean.setId(jsonObj.getInt("id"));     

        //根据属性名获取String数据;
         bean.setTitle(jsonObj.getString("title")); 

        //根据属性名获取JSONObject类
         JSONObject config = jsonObj.getJSONObject("config");
         bean.setWidth(config.getInt("width"));
         bean.setHeight(config.getInt("height"));

         //根据属性名获取JSONArray数组
         JSONArray data = jsonObj.getJSONArray("data");
        for(int index = 0, length = data.length(); index < length; index++) {

 //            bean.setLanguages(String[]);         }        
     }
 }

2、JSON对象转换为String字符串

//创建JSONObject对象
        JSONObject json = new JSONObject();

        //向json中添加数据
         json.put("username", "wanglihong");
        json.put("height", 12.5);
         json.put("age", 24);

       //创建JSONArray数组,并将json添加到数组
        JSONArray array = new JSONArray();
        array.put(json);

         //转换为字符串
        String jsonStr = array.toString();

3、集合转换为JSONArray对象

//初始化ArrayList集合并添加数据
        List<String> list = new ArrayList<String>();
        list.add("username");
         list.add("age");
         list.add("sex");

         //初始化HashMap集合并添加数组
         Map map = new HashMap();
        map.put("bookname", "CSS3实战");
        map.put("price", 69.0);

        //初始化JSONArray对象,并添加数据
        JSONArray array = new JSONArray();
        array.put(list);
        array.put(map);

       //生成的JSON字符串为:[["username","age","sex"],{"price":69,"bookname":"CSS3实战"}]

最后附上一个最常用的json在线解析工具(点我跳转),以便大家以后的编程变得更加轻松愉快。

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值