zoukankan      html  css  js  c++  java
  • Json详解

    简述

      Json是JavaScript Object Notation,中文是JavaScript对象表示法。json是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据。于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

    基本规则

      数据在名称/值对中:json数据是由键值对构成的。键由引号引起来,也可以不用引号

      多个数据由逗号分隔

      花括号保存对象:使用{}定义json格式

      方括号表示数组  

      json值的取值类型:

    数字 (整数或浮点数)
    字符串 (在双引号中)
    逻辑值 (true 或 false)
    数组 (在方括号中) {"persons":[{},{}]}
    对象 (在花括号中) {"address":{"province":"陕西"....}}
    null /

    获取数据  

    获取单数据

      1.json对象.键名

      2.json对象["键名"]

      3.json数组对象[索引]

    遍历json

      对于json对象的遍历,我们就是在遍历它的key

    var person = {"name":"张三","age":23,"gender":true};
    for(var key in person){
        //key获取出来就是个字符出,自带""
        alert(key + ":" + person[key])
    }

      对于json数组的遍历,我们就要使用双重for循环的嵌套

    var persons2 = [
        {"name":"张三","age":23,"gender":true},
        {"name":"李四","age":23,"gender":true},
        {"name":"王五","age":23,"gender":true}
    ];
    for(var i = 0;i<persons2.length;i++){
        var p = persons2[i];
        for(var key in p){
            alert((key+":"+p[key]));
        }
    }

    json数据和java对象的相互转换

      json是在客户端和服务端数据传输的载体,所以就牵扯到json数据和java对象相互转换的问题。

      首先要导入json相关的jar包

      用于两者对象的相互转换的核心类是ObjectMapper类

    json转java

      我们用到readValue方法,两个参数分别为想要转换的json字符串、转换后的java类的class

    String json = "{"name":"张三","age":23,"gender":"男"}";
    ObjectMapper objectMapper = new ObjectMapper();
    Person person = objectMapper.readValue(json, Person.class);
    System.out.println(person);

    java转json

      对于转换成json方法我们有两个

    writeValue(参数1,参数2):
    参数1:
    File:将obj对象转为JSON字符串,并保存到指定的文件中
    Writer:将obj对象转为JSON字符串,并将json数据填充到字符输出流中
    OutputStream:将obj对象转为JSON字符串,并将json数据填充到字节输出流中
    参数2:
      Object对象
    writeValueAsString(Obj)
    将传入的obj对象转为json字符串

    一些相关的注解

    @JsonIgnore 排除属性
    @JsonFormat 时间属性值得格式化

      @JsonIgnore可以注解在成员变量上面,代表这个成员变量不会被转换到json数据中

      对于Date类型的成员变量,@JsonFormat(pattern = "yyyy-MM-dd")可以指定该时间的格式

    List和Map对象转换为json

      List对象其实转换出来就是一个json数组,里面含有多个json对象

    Person p1 = new Person("张三",23,"男",new Date());
    Person p2 = new Person("李四",23,"男",new Date());
    Person p3 = new Person("王五",23,"男",new Date());
    List<Person> list = new ArrayList<Person>();
    Collections.addAll(list,p1,p2,p3);
    ObjectMapper objectMapper = new ObjectMapper();
    String json = objectMapper.writeValueAsString(list);
    System.out.println(json);

      Map对象其实就更加简单了,其实就是将Map对象里的键值对转化成一个对象罢了

    Map<String,Object> map = new HashMap<String,Object>();
    map.put("name","张三");
    map.put("age",23);
    ObjectMapper objectMapper = new ObjectMapper();
    String json = objectMapper.writeValueAsString(map);
    System.out.println(json);

     

     

      

      

    一点一点积累,一点一点蜕变!
  • 相关阅读:
    数据结构--链表基础练习题
    LeetCode 10.28每日一题1207. 独一无二的出现次数【简单】
    数据结构--链表
    LeetCode 10.25每日一题845. 数组中的最长山脉【中等】
    LeetCode 10.22每日一题763. 划分字母区间【中等】
    解决map热点与uni-app中map标签冲突的问题。(Vue Render函数应用)
    【Codeforces 1329A】Dreamoon Likes Coloring
    【Codeforces Alpha Round #20 C】Dijkstra?
    【 Educational Codeforces Round 93 (Rated for Div. 2) D】Colored Rectangles
    【Codeforces Round #643 (Div. 2) C】Count Triangles
  • 原文地址:https://www.cnblogs.com/qq2210446939/p/14958271.html
Copyright © 2011-2022 走看看