【学习笔记】JSON

一、概念

JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写。 同时也易于机器解析和生成。 它基于 JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999 的一个子集。 JSON 采用完全独立于语言的文本格式, 但是也使用了类似于 C 语言家族的习惯(包括 C, C++, C#, Java,JavaScript, Perl, Python 等) 。 这些特性使 JSON 成为理想的数据交换语言。

二、定义对象和基本使用

2.1 定义格式

在这里插入图片描述

    <script type="text/javascript" >
        var jsons = {
    
    
            "key1":"value1", //字符串类型
            "key2":123,     //number
            "key3":["12",12,3],//数组
            "key4":{
    
     //json类型
                "key4_1":"value1",
                "key4_2":123,
            },
            "key5":[ //json数组
                {
    
    "key5_1_1":"value1"},
                {
    
    "key5_2_1":"value2"}],
        }

    </script>

2.2 对象的访问

访问json对象的属性时,使用【对象名.属性名】访问

    <script type="text/javascript" >
        var jsons = {
    
    
            "key1":"value1", //字符串类型
            "key2":123,     //number
            "key3":["12",12,3],//数组
            "key4":{
    
     //json类型
                "key4_1":"value1",
                "key4_2":123,
            },
            "key5":[ //json数组
                {
    
    "key5_1_1":"value1"},
                {
    
    "key5_2_1":"value2"}],
        }

            alert(jsons.key1);
            alert(jsons.key3[1]);
            alert(jsons.key4.key4_1);
            alert(jsons.key5[0].key5_1_1);
    </script>

三、json的两个常用方法

在这里插入图片描述

            var json = {
    
    
                "key1":"value1", //字符串类型
                "key2":123,     //number
            }
            alert("原始json:"+json);
            
            var str=JSON.stringify(json);
            alert("对象转为字符串:"+str);

            var obj = JSON.parse(str);
            alert("字符串转对象:"+obj);

四、JSON在Java中的使用

我们要使用 json 和 java 中使用,我们需要使用到一个第三方的包。它就是 gson.jar。

Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库。可以将一个 JSON 字符串转成一个 Java 对象,或者反过来。

JSON字符串和对象的转换

/*
对象转为JSON字符串
*/
// json 操作, 一定要先 new 一个 gson 对象。
Gson gson = new Gson();
// java 对象--json
Person person = new Person(12, "wzg168");
// 把对象转成为 json 字符串
String personjson = gson.toJson(person);

/*
JSON字符串转为对象
*/
// 把 json 字符串转换成为 java 对象
Person p = gson.fromJson(personjson, Person.class);
System.out.println(p);

list集合和JSON数组的转换

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

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

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

Map和JSON的转换

扫描二维码关注公众号,回复: 12645417 查看本文章
// 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());

猜你喜欢

转载自blog.csdn.net/DREAM_yao/article/details/114267633
今日推荐