JSON使用笔记

1,json的数据格式

    名称/值对 如  "name":"张三"

    例:

        {

            "student":[

                {"name":"张三","age":15},

                {"name":"李四","age":20}

            ]

        }

    个人感觉除了键的部分也要加引号(key也是String类型),整个json数据的结构和js对象的定义还是很像的。

2,json的数据格式

    数字(整数或浮点数) 123   1.23

    字符串(在双引号中)

    逻辑值(true,false)

    数组(在方括号中)

    对象(在花括号中)

    null

    注:json本身没有日期,时间这样的数据格式,所以这些都用字符串

3,js解析json数据格式通常有两种方式------eval和JSON.parse    

//eval
//上面例子中的json数据
var jsondata='{"student":[{"name":"张三","age":15},{"name":"李四","age":20}]}';
//解析成json对象
var jsonobj=eval('('+jsondata+')');
//操作json数据
alert(jsonobj.student[0].name);
//以上代码的结果是弹出了对话框  “张三” 说明json解析成功


//下面换种情况看看

//上面例子中的json数据,注意把原来张三的age值换成了  alert(123)
var jsondata='{"student":[{"name":"张三","age":alert(123)},{"name":"李四","age":20}]}';
//解析成json对象
var jsonobj=eval('('+jsondata+')');
//操作json数据
alert(jsonobj.student[0].name);

//上面代码执行结果是先弹出 123 ,再弹出 张三,说明解析json时执行了json数据里的js代码

//JSON.parse
//用JSON.parse来解析   对应jquery:   $.parseJSON(); 
var jsondata='{"student":[{"name":"张三","age":alert(123)},{"name":"李四","age":20}]}';
//解析成json对象
var jsonobj=JSON.parse(jsondata);
//操作json数据
alert(jsonobj.student[0].name);
//结果说明都没弹出,报了一个错误,说明JSON.parse不会执行json里面的代码,并且会捕捉数据的语法错误

    注:最好不要用eval解析json,特别是解析第三方数据,很危险!!!

    用obj.toJSONString(); 或者obj.stringify(obj);将json对象转成字符串。

4,java对json对象的处理

    现在常用的json工具包是org.json

//json对象的创建
JSONObject jsonobject=new JSONObject();
Object o=null;
try{
    jsonobject.put("name","jack");
    jsonobject.put("age",12);
    jsonobject.put("brithday","2005-10-01");
    jsonobject.put("aihao",new String[]{"篮球","羽毛球"});
    //jsonobject.put("...",false);
    //jsonobject.put("...",o);
}catch(JSONException e){
    e.printStackTrace();
}
jsonobject.toString();//变成字符串

//用HashMap来创建json对象
Map<String,Object> map=new HashMap<String,Object>();
map.put("name","jack");
map.put("age",12);
map.put("brithday","2005-10-01");
map.put("aihao",new String[]{"篮球","羽毛球"});
JSONObject jsonobject=new JSONObject(map);

//用javaBean来创建json
//和上面一样,也是直接用构造方法,传入javaBean对象
JSONObject jsonobject=new JSONObject(javaBean);

//当然,如果已有一个json格式的字符串,也能传入到构造方法产生json对象

    gson能够对json数据和对象进行更加复杂的操作,这里不延伸

转载于:https://my.oschina.net/squan/blog/1036984

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值