• JavaWeb-----------------Json(一)


    1.什么是json?

    通俗来说 就是把java对象转换为一个json的字符串,再到浏览器端把json的字符串转换为javascript的对象。

    也就是一个序列化和反序列化的过程

    也就是这样一个过程

    2.什么是一个json的对象

    [{"name":"JSON","address":"四川省","age":18}]//数据对象格式
    

    但是由于浏览器获得并不是一个json的对象,而是一个json的字符串(json的字符串不具有属性,也就是无法获取到对象里面的值)

    <script type="text/javascript">
    var s1="{name:'xyf',age:19}"//普通的字符串,普通字符串没有属性
    var p1={name:'yzk',age:18};//普通键值对对象
    alert(s1);
    alert(p1);
    alert(p1.age);
    alert(s1.name);
    
    var p2=eval("("+s1+")");//转换对象 eval字符串转换为对象,使用eval将
    alert("名称是"+p2.name);
    //eval会有安全问题 应该使用json来转换,只有新的浏览器才支持
    var s2="[3,5,9]";
    var arrl=JSON.parse(s2);
    alert(arrl[2]);//得到第三个对象
    </script>
    

     需要通过转换的方式将其转换为json的对象

    方法一:eval方法转换,但是该方法不安全

    var p2=eval("("+s1+")");//转换对象 eval字符串转换为对象,使用eval将
    

    方法二:json.parse方法,该方法只支持新版的浏览器

    var s2="[3,5,9]";
    var arrl=JSON.parse(s2);
    alert(arrl[2]);//得到第三个对象
    

    3.服务器端如何封装一个json的字符串呢

    方法一:直接拼接,简单粗暴,但是每次都这样就很麻烦

     String s="{age:"+u.getAge()+",phoneNum:'"+u.getPhone()+"'}";
    

    方法二:

      Gson gson=new Gson();
    		   String s=gson.toJson(u);//遍历所有字段并生成json
    		   resp.getWriter().println(s);		
    

    使用谷歌的gson来封装一个字符串

    需要导入jar文件到lib下

    gson-2.5.jar

    同样使用gson来封装字符串有两个问题

    1.json不能调用类中的方法,也就是假如你定义一个toString的方法 在浏览器端是无法解析出来的

    2.json通过字段来获取封装为字符串,并不是遍历一个类中的所有成员。

  • 相关阅读:
    开始之旅9.18
    驱动学习
    Extjs TextField扩展
    数据结构经典算法java
    JAVA BeanUtil应用 一个类向另一个类转换
    Extjs timefield
    图片压缩成指定大小
    js正则表达式提取字符串中的数字
    STM32笔记记录2
    #ifdef,#else,#endif,#if用法详解
  • 原文地址:https://www.cnblogs.com/a986771570/p/8175815.html
Copyright © 2020-2023  润新知