1. 程式人生 > >將物件以json的形式寫入

將物件以json的形式寫入

1. 首先建立一個Product類,並實現序列化

import java.io.Serializable;

//將類的物件按照字串格式存到redis
public class Product implements Serializable{
    private String name;
    private int price;
    private String desc;

    public String getName() {
        return name;
    }

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

    public int getPrice() {
        return price;
    }

    public void setPrice(int price) {
        this.price = price;
    }

    public String getDesc() {
        return desc;
    }

    public void setDesc(String desc) {
        this.desc = desc;
    }

    @Override
    public String toString() {
        return "product:名稱: "+name + " 價格: "+ price+" 描述: "+ desc;
    }
}

Redis實現:

import com.google.gson.Gson;
import redis.clients.jedis.Jedis;

import java.io.*;


public class StringDemo {

    private static Jedis jedis = new Jedis("192.168.88.130",6379);
    //字串快取
    public static void StringTest(){
        jedis.set("user:01:name","kate");
        //mset寫多行資料
        jedis.mset("user:02:name","mary","user:03:name","candy");

        //根據key取值
        String name1 = jedis.get("user:01:name");
        String name2 = jedis.get("user:02:name");
        String name3 = jedis.get("user:03:name");

        System.out.println(name1);
        System.out.println(name2);
        System.out.println(name3);

        jedis.close();
    }

    //存物件,到字串數結構
    public static void objectTest()throws Exception{
       Product product = new Product();
       product.setName("Apple");
       product.setPrice(5);
       product.setDesc("很甜");

       //將物件進行序列化
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        ObjectOutputStream oos =  new ObjectOutputStream(baos);
        //把物件寫到輸出流裡面
        oos.writeObject(product);

        //將序列化好的物件資料存到一個String型別的數組裡面
        byte[] bproduct = baos.toByteArray();

        jedis.set("product01".getBytes(),bproduct);
        byte[] resbyte = jedis.get("product01".getBytes());
        //反序列化
        ByteArrayInputStream bais =  new ByteArrayInputStream(resbyte);
        ObjectInputStream ois = new ObjectInputStream(bais);
        Product products = (Product)ois.readObject();

        //列印結果
        System.out.println(products);
        jedis.close();
    }

    //物件以json的形式寫入
    public static void objectToJsonTest(){
        Product product = new Product();
        product.setName("Apple phone");
        product.setPrice(5);
        product.setDesc("很貴");

        //把物件轉變成一個json
        Gson gson = new Gson();
        String jsonObject = gson.toJson(product);

        jedis.set("product02",jsonObject);
        String jsonStr  =jedis.get("product02");
        //把json裡面物件取出來
        Product res =  gson.fromJson(jsonStr,Product.class);
        System.out.println(res);
        jedis.close();
    }

    public static void main(String[] args) throws Exception {
       // StringTest();
       objectTest();
        //objectToJsonTest();
    }

}
/*
product:名稱: Apple 價格: 5 描述: 很甜
 */

啟動redis

/usr/local/redis/bin/redis-server /usr/local/redis/bin/redis.conf 

/usr/local/redis/bin/redis-cli -h 127.0.0.1 -p 6379