zoukankan      html  css  js  c++  java
  • JavaWeb_(Jar)使用fastjson解析json和序列化对象

      菜鸟教程  传送门

      JSON官网  传送门

      fastjson插件下载  传送门

      序列化【百度百科】:序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象

      反序列化:反序列化从序列化的表示形式中提取数据,并直接设置对象状态

      持久化【百度百科】:持久化是将程序数据在持久状态和瞬时状态间转换的机制。通俗的讲,就是瞬时数据(比如内存中的数据,是不能永久保存的)持久化为持久数据(比如持久化至数据库中,能够长久保存)

    简单数据解析json和序列化对象 

      

    package com.Gary.util;
    
    import com.Gary.model.Goods;
    import com.alibaba.fastjson.JSON;
    
    public class GaryJson {
        public static void main(String[] args) {
            
            //序列化    持久化
            Goods    goods = new Goods("香蕉","这是香蕉",100,400);
            String json = JSON.toJSONString(goods);
            System.out.println(json);
            
            //反序列化    解析
            String s = "{"des":"这是香蕉","inventory":400,"name":"香蕉","price":100}";
            Goods goods2 = JSON.parseObject(s, Goods.class);
            System.out.println(goods2.getName());
            System.out.println(goods2.getDes());
            System.out.println(goods2.getPrice());
            System.out.println(goods2.getInventory());
        }
    }
    GaryJson.java

      通常境况下json数据都会直接获取,复制粘贴json数据时,可通过@""方法

      解析字符串时可@""方法将代码copy进" "中编辑器会自动添加""及" "符

      

    复杂数据解析json和序列化对象 

      解析JSON数组对象时候需要存在一个对象集合去保存

    [
    {
        "name":"Gary1",
        "age":10,
        "sex":"man"
    },
    {
        "name":"Gary2",
        "age":20,
        "sex":"man"
    },
    {
        "name":"Gary3",
        "age":30,
        "sex":"women"
    }
    ]
    需要解析的json
    package com.Gary.util;
    
    import java.util.List;
    
    
    import com.alibaba.fastjson.JSON;
    
    public class GaryJson {
        public static void main(String[] args) {
            
            String s = "[
    " + 
                    "{
    " + 
                    "    "name":"Gary1",
    " + 
                    "    "age":10,
    " + 
                    "    "sex":"man"
    " + 
                    "},
    " + 
                    "{
    " + 
                    "    "name":"Gary2",
    " + 
                    "    "age":20,
    " + 
                    "    "sex":"man"
    " + 
                    "},
    " + 
                    "{
    " + 
                    "    "name":"Gary3",
    " + 
                    "    "age":30,
    " + 
                    "    "sex":"women"
    " + 
                    "}
    " + 
                    "]";
            
            List<User> list =    JSON.parseArray(s,(User.class));
            for(User u : list) {
                System.out.println(u);
            }
        }
    }
    GaryJson.java
    package com.Gary.util;
    
    public class User {
        private String name;
        private String sex;
        private int age;
        public User(String name, String sex, int age) {
            super();
            this.name = name;
            this.sex = sex;
            this.age = age;
        }
        public String getName() {
            return name;
        }
        //重写toString方法方便观察
        @Override
        public String toString() {
            return "User [name=" + name + ", sex=" + sex + ", age=" + age + "]";
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getSex() {
            return sex;
        }
        public void setSex(String sex) {
            this.sex = sex;
        }
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
    }
    User.java

      需要解释的JSON对象

    {
        "name":"Gary1",
        "age":10,
        "sex":"man"
    }

      存在一个类要和JSON对象属性保持一致

        private String name;
        private String sex;
        private int age;

      通过fastjson.JSON解析JSON数据

        List<User> list =    JSON.parseArray(s,(User.class));
        for(User u : list) {
            System.out.println(u);
        }
    (如需转载学习,请标明出处)
  • 相关阅读:
    6.素数和(素数的判断)
    6.素数和(素数的判断)
    5.明明的随机数(桶排序经典例题)
    5.明明的随机数(桶排序经典例题)
    5.明明的随机数(桶排序经典例题)
    5.明明的随机数(桶排序经典例题)
    Algs4-1.2.11根据Date的API实现一个SmartDate类型
    Algs4-1.2.10编写一个类VisualCounter
    Algs4-1.2.9使用Counter统计BinarySearch检查的key个数
    Algs4-1.2.8引用型变量赋值-数组复制
  • 原文地址:https://www.cnblogs.com/1138720556Gary/p/10313957.html
Copyright © 2011-2022 走看看