非标准json,标准json,json字符串与js对象,Java对象之间的相互转换

一、json字符串与js对象之间的转换:

JS对象->标准JSON字符串

    JSON.stringify(value,[replacer],[space]):

    replacer的作用:

        为数组时,对Map型或者对象型的value进行属性筛选(replacer是以value中key组成的数组);

        为函数时,对每一个传入的key,value进行对应的function(key,value)处理

   space的作用:格式化将要返回的字符串并利用传入的space参数进行缩进:

   {

   space key:value,

   space key:value,

     ...

   }

JQuery对象->标准JSON字符串

jquery对象.serialize():能够将jquery对象以attr('name'):attr('value')的形式构成标准JSON字符串返回(form表单,checkbox对应的jquery对象都行)

非标准JSON字符串->JS对象:

eval('('+commonJSONstr+')')
     --补充说明:eval 本身的问题。 由于 json 是以 {} 的方式来开始以及结束的,在 js 中,它会被当成一个语句块来处理,所以必须强制性的将它转换成一种表达式。

标准JSON字符串->JS对象:

eval('('+standardJSONstr+')')

JSON.parse(standardJSONstr,function(key,value){})
    ---补充说明:function(key,value)是standardJSONstr解析完成前针对每一组键值对的回调处理函数
        text:必需, 一个有效的 JSON 字符串。reviver: 可选,一个转换结果的函数, 将为对象的每个成员调用此函数。
        实例
        var text = ' { "name":"Runoob", "initDate":"2013-12-14", "site":"www.runoob.com"} ' ;
        var
obj = JSON . parse ( text , function ( key , value ) { if ( key == " initDate " ) { return new Date ( value ) ; } else { return value ; } } ) ;
        document . getElementById ( " demo " ) . innerHTML = obj . name + " 创建日期: " + obj . initDate ;

二、json字符串与java对象之间的转换:

标准JSON字符串->Java对象:

    标准JSON字符串->过渡对象->map:

     json字符串无法直接转化成map,这里我们先将相应的mapStr转换成"结构一致"的Bean对象(这里我们起名为MapBean,MyBean类的数据结构要与对应的Map结构一致)
    JSONObject.toBean(JSONObject.fromObject(mapStr),similarBeanType,propertyName_propertyType_Map);

         ---例子:

              public static void jsonToMap(){

                  String strObject="{\"first\":{\"address\":\"中国上海\",\"age\":\"23\",\"name\":\"JSON\"}}";

                  //JSONObject

                  JSONObject jsonObject=JSONObject.fromObject(strObject);

                 Map map=new HashMap();

                 map.put("first",Student.class);

                 //使用了toBean方法,需要三个参数

                 MyBean my=(MyBean)JSONObject.toBean(jsonObject,MyBean.class, map);

                 System.out.println(my.getFirst());

             }           

             public class MyBean {

                 private Student first;

                 public Student getFirst() {

                     return first;

                 }

                 public void setFirst(Student first) {

                     this.first = first;

                }

           }

          打印结果:Student [name=JSON, age=23, address=中国上海]

    标准JSON字符串->过渡对象->list:JSONObject.toList(JSONObject.fromObject(arrStr),elementType);
    标准JSON字符串->过渡对象->数组:JSONObject.toArray(JSONObject.fromObject(arrStr),elementType);
    标准JSON字符串->过渡对象->对象:JSONObject.toBean(JSONObject.fromObject(jsonStr),objType);

Java对象->标准JSON字符串:

    map,普通对象->过渡对象->标准JSON字符串:JSONObject.fromObject(jsonStr).toString();

    list,数组->过渡对象->标准JSON字符串:JSONArray.fromObject(jsonStr).toString();

    struts2中的json结果集默认会将Action中的getter对应的属性以键值对"属性:getter"形式组成一个标准JSON字符串利用response来print到页面中或传递到ajax的回调参数data中

注意:

1.JSON对象是存在于JavaScript中的,java中不存在该对象,java中有的仅仅只是JSON字符串.

2.JavaScript默认会对JSON对象解析让其变成普通JS对象,JSON对象与JS对象在使用上没有什么差别,所以本文中把JS对象与JS中的JSON对象统称为JS对象

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值