JSON使用

一.JSON 描述

  JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。

二.语法规则

  1.JSON是由‘名称/值’对组成的集合,’名称/值‘格式例如,“key1”:value1。

  2.JSON的值(value) 可以是双引号括起来的字符串(string)、数值(number)、true、false、 null、对象(object)或者数组(array)。

  3.JSON有两种结构,一种是对象,另一种是数组。

三.重点讲解

  org.json.JSONArray。这是一个处理json中数组的类,org.json.JSONObject。这是一个处理json对象的类,用这两个类基本就可以进行json数据与Java对象之间的转换了。JSONObject的常用构造器如下:

       (1)JSONObject()空构造器:

    JSONObject(JSONObject jo, java.lang.String[] names)接受一个JSONObject对象和一个json名称数组

    JSONObject(java.util.Map<?,?> map)接受一个Map

    JSONObject(java.lang.Object bean)接受一个javaBean

    JSONObject(java.lang.Object object, java.lang.String[] names)接受一个Java对象,指定名称数组

    JSONObject(java.lang.String source)接收json格式的文本

  (2)JSONObject中的常用方法介绍一下:

    append(java.lang.String key, java.lang.Object value)           这是向json中的数组添加元素的方法

    put(java.lang.String key, boolean value)                添加一个名称/值对到JSONObject对象中。值可以是boolean,Collection,double,int,long,Map,Object类型的

    remove(java.lang.String key)                     移除指定名称的名称/值对

    get(java.lang.String key)                       获取指定名称的名称/值对,名称不存在抛出异常

    opt(java.lang.String key)                       也是获取指定名称的名称/值对,但是如果名称不存在,不会抛出异常,会返回一个默认值

  (3)JSONArray中的常用方法:

    get(int index)                            获取指定下标的元素,不存在则抛出异常

    opt(int index)                            获取指定下标的元素,不存在不抛出异常,返回默认值

    put(boolean value)                           添加一个元素,可取boolean,Collection,double,int,long,map,Object

    put(int index, int value)                        在指定下标处添加一个元素,如果指定的下标小于最大值,则会进行替换,如果大于最大值,则会添加元素,在指定下标与原来最大下标之间(如果间隔大于1)会用null填充

    remove(int index)                          移除指定下标的元素,返回移除的元素或者是null

  (4)下面是一个JavaBean转换为json文本的例子:

public class Message {
                            private int code;   
                            private String date;
                            public int getCode() {
                                return code;   
                            }
                            public void setCode(int code) {
                                this.code = code;   
                            }
                            public String getMsg() {
                                return msg;
                            }
                            public void setMsg(String msg) {
                                this.msg = msg;   
                            }
                             public String getDate() {
                                 return date;
                            }
                             public void setDate(String date) {
                                 this.date = date;   
                             }
 public class App{
                        public static void main(String[] args) {
                            Message msg = new Message();
                            msg.setCode(200);
                            msg.setMsg("successed");
                            SimpleDateFormat spf = new SimpleDateFormat("yyyy/MM/dd");
                            Date date = new Date();
                            String format = spf.format(date);
                            msg.setDate(format);
                            System.out.println(new JSONObject(msg));   
                            }
                    }
public class App {
        public static void main(String[] args) {
        String s = "{\r\n" + 
        "    \"name\": \"中国\",\r\n" + 
        "    \"province\": [{\r\n" + 
        "        \"name\": \"黑龙江\",\r\n" + 
        "        \"cities\": {\r\n" + 
        "            \"city\": [\"哈尔滨\", \"大庆\"]\r\n" + 
        "        }\r\n" + 
        "    }, {\r\n" + 
        "        \"name\": \"广东\",\r\n" + 
        "        \"cities\": {\r\n" + 
        "            \"city\": [\"广州\", \"深圳\", \"珠海\"]\r\n" + 
        "        }\r\n" + 
        "    }, {\r\n" + 
        "        \"name\": \"台湾\",\r\n" + 
        "        \"cities\": {\r\n" + 
        "            \"city\": [\"台北\", \"高雄\"]\r\n" + 
        "        }\r\n" + 
        "    }, {\r\n" + 
        "        \"name\": \"新疆\",\r\n" + 
        "        \"cities\": {\r\n" + 
        "            \"city\": [\"乌鲁木齐\"]\r\n" + 
        "        }\r\n" + 
        "    }]\r\n" + 
        "}";
        
        JSONObject jsonObj = new JSONObject(s);
        // 获取中国
        System.out.println("获取中国 = " + jsonObj.getString("name"));
        // 省数组 
        JSONArray arr = jsonObj.getJSONArray("province");
        System.out.println("省数组 = " + arr);
        // 黑龙江省 
        jsonObj = arr.getJSONObject(0);
        System.out.println("黑龙江省" + jsonObj);
        // 黑龙江省名字 
        String name2 = jsonObj.getString("name");
        System.out.println("黑龙江省名字 = " + name2);
        // 黑龙江省城市数组 
        arr = jsonObj.getJSONObject("cities").getJSONArray("city");
        System.out.println("黑龙江省城市数组" + arr);
        }
        }

 

posted @ 2019-08-12 18:29  stt101517  阅读(191)  评论(0编辑  收藏  举报