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);
        }
        }

声明:该文章系转载,转载该文章的目的在于更广泛的传递信息,并不代表本网站赞同其观点,文章内容仅供参考。

本站是一个个人学习和交流平台,网站上部分文章为网站管理员和网友从相关媒体转载而来,并不用于任何商业目的,内容为作者个人观点, 并不代表本网站赞同其观点和对其真实性负责。

我们已经尽可能的对作者和来源进行了通告,但是可能由于能力有限或疏忽,导致作者和来源有误,亦可能您并不期望您的作品在我们的网站上发布。我们为这些问题向您致歉,如果您在我站上发现此类问题,请及时联系我们,我们将根据您的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。