当前位置:首页 > > 充电吧
[导读] 1.一般我们在进行客户端和服务端交换数据的时候,会使用Json来进行数据的传输,即转换成字符串类型的json数据来进行数据的交换。 2.Json类型的数据一般是 JSONObject

1.一般我们在进行客户端和服务端交换数据的时候,会使用Json来进行数据的传输,即转换成字符串类型的json数据来进行数据的交换。

2.Json类型的数据一般是 JSONObject(对象),JSONArray(数组)。一般来说二组的区别在于,对象是无序的,而数组是有序的,看具体需求选择使用。

import org.json.simple.JSONArray;
import org.json.simple.JSONObject;

/**
 * 使用的是json-lib-2.4.jar
 * @author yes
 *
 */


public class TestJson {
    public static void main(String[] args) throws Exception {   
          //定义一个json对象
           JSONObject jo = new JSONObject();
           jo.put("id", "1");
           jo.put("name", "yang");
           jo.put("age", "13");

           //定义一个Json数组
           JSONArray ja = new JSONArray();
           ja.add(0, "yang");
           ja.add(1,"li");
           ja.add(2, "zhang");

           System.out.println("json对象的格式:"+jo);
           System.out.println("json数组的格式:"+ja);

           //使用类自带的方法来转换成String类型
           String str_ = jo.toJSONString();
           String strs_ = ja.toJSONString();

           System.out.println("json对象-->String"+str_);
           System.out.println("json数组-->String"+strs_);
    }       
}

执行结果:
json对象的格式:{"id":"1","age":"13","name":"yang"}
json数组的格式:["yang","li","zhang"]
json对象-->String{"id":"1","age":"13","name":"yang"}
json数组-->String["yang","li","zhang"]
12345678910111213141516171819202122232425262728293031323334353637383940411234567891011121314151617181920212223242526272829303132333435363738394041

3.Json在数据传输中的使用

a.将各种类型装换成Json类型字符串
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Test03 {
    public static void main(String[] args) {        
    //创建一个User对象(name,age,id)
        User user = new User();
        user.setAge(22);
        user.setName("张三");
        user.setId(33);

        List li = new ArrayList();  
        //创建一个Map,放入三组值
    Map hashMap = new HashMap();
           hashMap.put("name", "ZHULI");
           hashMap.put("age", "30");
           hashMap.put("id", "4");

         //向List中放入数据   
            li.add(0, "123");
            li.add(1,"444");  
            li.add(hashMap); 

        //将List,Map,Bean---->json类型字符串  
            String stra = GsonUtil.GsonString(user);
            String strb = GsonUtil.GsonString(hashMap);
            String strc = GsonUtil.GsonString(li);

            System.out.println("Bean-->String结果:"+stra);
            System.out.println("Map-->String结果:"+strb);
            System.out.println("List-->String结果"+strc);

    }
}
执行结果:
Bean-->String结果:{"name":"张三","age":22,"id":33}
Map-->String结果:{"id":"4","age":"30","name":"ZHULI"}
List-->String结果["123","444,{"id":"4","age":"30","name":"ZHULI"}]
1234567891011121314151617181920212223242526272829303132333435363738394012345678910111213141516171819202122232425262728293031323334353637383940
b.将各种类型的json类型字符串解析出来
//1.将JsonArray类型字符串转换成Bean或list

import java.util.List;
import Socket.User;

public class Test02 {

public static void main(String[] args) {
    //定义一个jsonArrayString
    String json = "[{'name':'yang','id':'1','age':'18'},"
            + "{'name':'zhang','id':'2','age':'13'}]";

    //jsonString转list,User类自己创建,三个属性
    List li = GsonUtil.jsonArrayToList(json,User.class);
    for(User user : li){
        String name = user.getName();
        Integer id = user.getId();
        Integer age = user.getAge();
        System.out.println("学生的姓名是:"+name+"  "+"ID是:"+id+"  "+"年龄是:"+age);
    }   
  }
}

执行结果:
学生的姓名是:yang  ID是:1  年龄是:18
学生的姓名是:zhang  ID是:2  年龄是:13
123456789101112131415161718192021222324252627123456789101112131415161718192021222324252627
将JsonArray类型字符串转换成List中包含map的
import java.util.List;
import java.util.Map;

public class Test05 {
    public static void main(String[] args) {

        String json = "['123','444',{'id':'4','age':'30','name':'ZHULI'}]";

        //list中含有Map但不全是Map
        List li = GsonUtil.GsonToListMap(json);
        Map m  =(Map) li.get(2);        
        System.out.println(m.get("age"));

    }
}
//如果list中全部是Map类型的数据,使用GsonToListMap();方法
执行结果:
30
123
1234567891011121314151617181912345678910111213141516171819
c.实用性比较高的,复杂的数据转化成Bean进行操作
//先贴出学生类
package TestJson;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

public class Student {
    private String id;
    private String nickName;
    private String email;
    private String age;
    private List books = new ArrayList();
    private  HashMap booksMap = new HashMap();
    //获取set,get方法
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getNickName() {
        return nickName;
    }
    public void setNickName(String nickName) {
        this.nickName = nickName;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public String getAge() {
        return age;
    }
    public void setAge(String age) {
        this.age = age;
    }
    public List getBooks() {
        return books;
    }
    public void setBooks(List books) {
        this.books = books;
    }
    public HashMap getBooksMap() {
        return booksMap;
    }
    public void setBooksMap(HashMap booksMap) {
        this.booksMap = booksMap;
    }  

}
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152531234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
//测试代码
package TestJson;

public class Test05 {
    public static void main(String[] args) {
    //定义一个包含list,map类型的字符串
        String json = "{'books':['数学','语文','英语','物理','化学','生物'],'booksMap':{'3':'英语','2':'语文','1':'数学','6':'生物','5':'化学','4':'物理'},'email':'965266509@qq.com','nickName':'小明','id':'1','age':'22'}";  
    //转化成Bean   
    Student su = GsonUtil.GsonToBean(json, Student.class);
    System.out.println("学生的姓名是:"+su.getNickName());
    System.out.println("学生学习的第一门课:"+su.getBooks().get(0));
    System.out.println("序号3课程是:"+su.getBooksMap().get("3"));
    }
}

执行结果:
学生的姓名是:小明
学生学习的第一门课:数学
序号3对应的课程是:英语
1234567891011121314151617181912345678910111213141516171819

5.将基本的转化实现放到了一个工具类中。GsonUtil.Java

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonParser;
import com.google.gson.reflect.TypeToken;

/**
 * 使用gson来操作Json
 * 1.对象实体类,list,map,等转化成----->jsonString(进行数据传递)
 * 2.jsonString转化成----->对象实体类,list,map(解析返回的数据)
 * 3.我使用的是gson-2.2.2.jar
 * @author yes
 *
 */

public class GsonUtil {


private static Gson gson = null;
    static {
        if (gson == null) {
            gson = new Gson();
        }
    }


    /**
     * 将object对象转成json字符串(jsonString)
     * boject 可以是List,也可以是Bean(对象类型)
     * @param object
     */
    public static String GsonString(Object object) {
        String gsonString = null;
        if (gson != null) {
            gsonString = gson.toJson(object);
        }
        return gsonString;
    }


    /**入参是json对象
     * 将gsonObjectString转成泛型bean(实体类)
     * @param gsonString
     */
    public static  T GsonToBean(String gsonString, Class cls) {
        T t = null;
        if (gson != null) {
            t = gson.fromJson(gsonString, cls);
        }
        return t;
    }

    /**
     * 这里的入参是json数组类型的字符串
     * jsonArrayString转成list
     */
    public static  List jsonArrayToList(String json, Class cls) {
        Gson gson = new Gson();
        List list = new ArrayList();
        JsonArray array = new JsonParser().parse(json).getAsJsonArray();
        for(final JsonElement elem : array){
            list.add(gson.fromJson(elem, cls));
        }
        return list;
    }



    /**
     * List对泛型没有要求
     * jsonString转成list中有map的
     */
    public static  List> GsonToListMap(String gsonString) {
        List list = null;
        if (gson != null) {
            list = gson.fromJson(gsonString,
                    new TypeToken() {
                    }.getType());
        }
        return list;
    }

    /**
     * 要求List中全部是Map
     * jsonString转成list中有map的
     */
    public static  List> GsonToListMaps(String gsonString) {
        List> list = null;
        if (gson != null) {
            list = gson.fromJson(gsonString,
                    new TypeToken>>() {
                    }.getType());
        }
        return list;
    }


    /**
     * jsonString转成map的
     */
    public static  Map GsonToMaps(String gsonString) {
        Map map = null;
        if (gson != null) {
            map = gson.fromJson(gsonString, new TypeToken>() {
            }.getType());
        }
        return map;
    }

    /**
     * map转jsonString,指定了Map类型
     */
    public static String MapToJson(Map map){
        String str = null;
        if(gson != null){
            str = gson.toJson(map);
        }
        return str;
    }    
}
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124

6.差不多在项目中的使用可以实现了,这里我从开始不懂到自己敲出来,也是参考了很多博客前辈的知识讲解。在学习中进步。








本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭