JSON

一、什么是 JSON

JSON (JavaScript Object Notation) 是一种轻量级

数据交换格式

二、JSON 对象定义和基本使用

在标准的 JSON 格式中,JSON 对象由大括号括起来,

对象中的属性也就是 JSON 的 key 是一个字符串,所

以一定要使用双括号引起来,每组 key 之间使用逗号

进行分隔

1. JSON 的定义

JSON 定义格式:

        var 变量名 = {

                "key" :value,          // Number 类型

                "key2" :value,        // 字符串类型

                "key3" :[],               // 数组类型

                "key4" :{},               // JSON 对象类型

                "key5" :[{},{}]             // JSON 数组

};

var jsons = {
        "key1":"abc", // 字符串类型
        "key2":1234, // Number
        "key3":[1234,"21341","53"], // 数组
        "key4":{ // json 类型
            "key4_1" : 12,
            "key4_2" : "kkk"
        },
        "key5":[{ // json 数组
            "key5_1_1" : 12,
            "key5_1_2" : "abc"
        },{
            "key5_2_1" : 41,
            "key5_2_2" : "bbj"
        }]
};

2. JSON 对象的访问

使用 【对象名.属性名】的方式访问 json 对象

    <script type="text/javascript">
        // json 的定义
        var jsons = {
                "key1":"abc", // 字符串类型
                "key2":1234, // Number
                "key3":[1234,"21341","53"], // 数组
                "key4":{ // json 类型
                    "key4_1" : 12,
                    "key4_2" : "kkk"
                },
                "key5":[{ // json 数组
                    "key5_1_1" : 12,
                    "key5_1_2" : "abc"
                },{
                    "key5_2_1" : 41,
                    "key5_2_2" : "bbj"
                }]
        };
        // 访问 json 的属性
        alert(jsons.key1); // "abc"
        // 访问 json 的数组属性
        alert(jsons.key3[1]); // "21341"
        // 访问 json 的 json 属性
        alert(jsons.key4.key4_1);//12
        // 访问 json 的 json 数组
        alert(jsons.key5[0].key5_1_2);//"abc"
    </script>

三、JSON 中的两个常用的方法

JSON 对象字符串对象的互转:

JSON.stringfy( json );         json 对象→json 字符串     

JSON.parses( jsonString); json 字符串→json 对象

<script type="text/javascript">
    // 一个 json 对象
    var obj = {
        "a" : 12,
        "c" : "str"
    };
    // 把 json 对象转换成为字符串对象
    var objStr = JSON.stringify(obj);
    //
    alert(objStr);
    // 把 json 对象的字符串,转换成为 json 对象
    var jsonObj = JSON.parse(objStr);
    alert(jsonObj);
</script>

四、JSON 在 java 中的使用

1. 导包

     gson.jar

Gson 是 Google 提供的用来在 java 对象

JSON 数据之间进行映射 java 类库,可以

将一个 JSON 字符串转成一个 Java 对象,

或者反过来           

2. json 在 java 中的操作,常见的三种情况:

java 对象和 json 的转换

② java 对象 list 集合和 json 的转换

map 对象和 json 的转换

 

package com.zh.gson;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

public class GsonTest {

    static class Person {
        private int age;
        private String name;

        public Person() {
            // TODO Auto-generated constructor stub
        }

        public Person(int age, String name) {
            this.age = age;
            this.name = name;
        }

        public int getAge() {
            return age;
        }

        public void setAge(int age) {
            this.age = age;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        @Override
        public String toString() {
            return "Person [age=" + age + ", name=" + name + "]";
        }
    }

    // 要把复杂的 json 字符串转换成为 java 对象。需要继承 TypeToken 类。
    // 并把返回的类型当成 TypeToken 的泛型注入
    static class PersonType extends TypeToken<List<Person>> {
    }

    public static void main(String[] args) {
        // json 操作,一定要先 new 一个 gson 对象。
        Gson gson = new Gson();
        // java 对象--json
        Person person = new Person(12, "wzg168");
        // 把对象转成为 json 字符串
        String personjson = gson.toJson(person);

        System.out.println(personjson);
        // 把 json 字符串转换成为 java 对象
        Person p = gson.fromJson(personjson, Person.class);
        System.out.println(p);
        System.out.println("------------------------------------------");
        // 2、java 对象 list 集合和 json 的转换
        List<Person> list = new ArrayList<Person>();
        for (int i = 0; i < 3; i++) {
            list.add(new Person(10 * i, "name-" + i));
        }
        String jsonListString = gson.toJson(list);
        System.out.println(jsonListString);

        // 把 json 数组转换成为 List 对象
        // List<Person> ps = gson.fromJson(jsonListString, new         PersonType().getType());
        // 我们也可以使用匿名内部类
        List<Person> ps = gson.fromJson(jsonListString, new TypeToken<List<Person>>() {
        }.getType());

        System.out.println(ps);
        System.out.println("------------------------------------------");

        // 3、map 对象和 json 的转换
        Map<String, Person> mapPerson = new HashMap<String, GsonTest.Person>();
        // 添加 person 到 map 中
        mapPerson.put("p1", new Person(1, "person-1"));
        mapPerson.put("p2", new Person(2, "person-2"));
        // 把 map 转换成为 json 对象
        String jsonMapString = gson.toJson(mapPerson);
        System.out.println(jsonMapString);
        // 通过使用匿名内部类的方式
        Map<String, Person> map = gson.fromJson(jsonMapString,
                new TypeToken<HashMap<String, Person>>() {}.getType());
        System.out.println(map);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值