研究一下Json的那些事儿

一:概念

Json(JavaScript Object Notation,JS 对象简谱),是一种轻量级的数据交换模式。采用完全独立于编程语言的文本格式来存储和表示数据。

二:语法

2.1规则:

      键:由单引号或者双引号括起来(也可以不同引号)

      值:类型

           a.字符串{"name":"zxx"}

           b.数值{"age":42}

           c.布尔值{"gender":true}

           d.json对象{"location":{"区":"通州区","路":"中二路"}}

           e.json数组{"emps":[{},{},{}]}

           f.null

2.2定义格式:

1.

{键1:值1,键2:值2,.....}

var emp={"id":"A01","name":"hhh",age:40,"sex":false};

2.

{键1:[{},{},{}],键2:[{},{},{}]}

  var emps = {"emps":[
                 {"id":"A01","name":"hhh",age:40,"sex":false},
                 {"id":"A02","name":"www",age:40,"sex":false},
                 {"id":"A03","name":"fff",age:40,"sex":false},
                 {"id":"A04","name":"ggg",age:40,"sex":false}


             ]};

3.

[{},{},{}]

var es = [
             {"id":"A01","name":"hhh",age:40,"sex":false},
             {"id":"A02","name":"www",age:40,"sex":false},
             {"id":"A03","name":"fff",age:40,"sex":false},
             {"id":"A04","name":"ggg",age:40,"sex":false}

         ];

2.3获取方式:

1.json对象.键

         var emp={"id":"A01","name":"hhh",age:40,"sex":false};

         alert(emp);
         alert(emp.name);


         alert(emp["name"]);

2.json对象["键"]


         var emps = {"emps":[
                 {"id":"A01","name":"hhh",age:40,"sex":false},
                 {"id":"A02","name":"www",age:40,"sex":false},
                 {"id":"A03","name":"fff",age:40,"sex":false},
                 {"id":"A04","name":"ggg",age:40,"sex":false}


             ]};

         alert(emps);
         alert(emps.emps[2].name);

3.数组对象[下标]

         var es = [
             {"id":"A01","name":"hhh",age:40,"sex":false},
             {"id":"A02","name":"www",age:40,"sex":true},
             {"id":"A03","name":"fff",age:40,"sex":false},
             {"id":"A04","name":"ggg",age:40,"sex":false}

         ];

         alert(es);

         alert(es[1]["sex"]);
         alert(es[1].sex);

2.4遍历方式:

for(var key in json对象){

    alert(key+"---"+json对象[key])

}

         var emp={"id":"A01","name":"hhh",age:40,"sex":false};

         for (var key in emp){
             //alert(key+"-----------"+emp.key);//不行

             alert(key+"-----"+emp[key]);

         }
         var es = [
             {"id":"A01","name":"hhh",age:40,"sex":false},
             {"id":"A02","name":"www",age:40,"sex":true},
             {"id":"A03","name":"fff",age:40,"sex":false},
             {"id":"A04","name":"ggg",age:40,"sex":false}

         ];


         for (var i =0;i<es.length;i++){
             for (var key in es[i]){
                 alert(key+"---------"+es[i][key]);
             }
         }

         // for (var key in es[0]){
         //     alert(key+"-------"+es[0][key]);
         // }
         //
         // for (var key in es[1]){
         //     alert(key+"-------"+es[1][key]);
         // }
         //
         // for (var key in es[2]){
         //     alert(key+"-------"+es[2][key]);
         // }

         var emps = {"emps":[
                 {"id":"A01","name":"hhh",age:40,"sex":false},
                 {"id":"A02","name":"www",age:40,"sex":false},
                 {"id":"A03","name":"fff",age:40,"sex":false},
                 {"id":"A04","name":"ggg",age:40,"sex":false}


             ]};

         for (var i =0;i<emps.emps.length;i++){
             for (var key in emps.emps[i]){
                 alert(key+":"+emps.emps[i][key]);
             }
         }

三、json数据和java对象的转换

json解析器:Jackson、Gson、Jsonlib

3.1 使用Jackson进行更新

3.1.1 Jackson使用步骤

1.导入相关jar包

2.创建核心类对象ObjectMapper

3.实现解析

      a.java->json

             WriteValueAsString(obj):将java对象转换成json字符串

             WriteValue(参数1,参数2):

                     参数1:

                               File:将obj转换成json字符串,并写入指定的文件中

                               Writer:将object对象转换成json字符串,并封装到字符输出流

                               OutputStream:将object对象转换成json字符串,并返回一个封装了此json字符串的字符输出流对象

                     参数2:Object

package com.test;

import com.entity.Emp;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.Test;

import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Date;

public class Main {

    @Test
    public void test1() throws IOException {
        Emp e = new Emp("zs",33,new Date(),false);


        ObjectMapper mapper= new ObjectMapper();

//        String json = mapper.writeValueAsString(e);
//
//        System.out.println(json);

        mapper.writeValue(new File("G:\\QQ\\a.txt"),e);

        mapper.writeValue(new FileWriter("G:\\QQ\\b.txt"),e);

        mapper.writeValue(new FileOutputStream("G:\\QQ\\c.txt"),e);

    }
}


注解:

         1.JsonIgonre:使某个属性不被解析成json数据

         2.JsonFormat:属性格式化

    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date birthday;


    @JsonIgnore
    private boolean gender;

package com.test;

import com.entity.Emp;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.Test;

import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.util.*;

public class Main {

    @Test
    public void test1() throws IOException {
        Emp e = new Emp("zs",33,new Date(),false);


        ObjectMapper mapper= new ObjectMapper();

        String json = mapper.writeValueAsString(e);

        System.out.println(json);
//
//        mapper.writeValue(new File("G:\\QQ\\a.txt"),e);
//
//        mapper.writeValue(new FileWriter("G:\\QQ\\b.txt"),e);
//
//        mapper.writeValue(new FileOutputStream("G:\\QQ\\c.txt"),e);

    }

    @Test
    public void test2() throws IOException {

        Emp e1 = new Emp("zs",33,new Date(),false);

        Emp e2= new Emp("ds",13,new Date(),true);

        Emp e3 = new Emp("ss",23,new Date(),false);

        List<Emp> emps = new ArrayList<>();

        emps.add(e1);

        emps.add(e2);

        emps.add(e3);

        ObjectMapper mapper= new ObjectMapper();

        String json = mapper.writeValueAsString(emps);

        System.out.println(json);


    }


    @Test
    public void test3() throws IOException {

        Emp e1 = new Emp("zs",33,new Date(),false);

        Emp e2= new Emp("ds",13,new Date(),true);

        Emp e3 = new Emp("ss",23,new Date(),false);

        Map<String,Emp> map = new HashMap<>();

        map.put("a",e1);
        map.put("b",e2);
        map.put("c",e3);

        ObjectMapper mapper= new ObjectMapper();

        String json = mapper.writeValueAsString(map);

        System.out.println(json);


    }
}


        b.json->java:

             readValue(参数1,参数2)

                    参数1:json字符串

                    参数2:.class

    @Test
    public void test4() throws IOException {

       String json = "{\"name\":\"李逵\",\"age\":42}";



        ObjectMapper mapper= new ObjectMapper();
         Emp e = mapper.readValue(json,Emp.class);

        System.out.println(e);


    }

猜你喜欢

转载自blog.csdn.net/tony_yang6/article/details/106682164