json解析

本文介绍了JSON数据格式在前端(JS/jQuery)及后端(Java)中的解析方法,包括使用eval()、new Function()、JSON.parse()、$.getJSON()等前端技术手段,以及通过JSONObject和JSONArray实现的Java解析技术。
摘要由CSDN通过智能技术生成

JSON解析
关于json的解析,可以分为js/jquery解析和Java解析;
js/jquery解析json:
eval()方法
将json字符串解析成json对象,并通过jQuery的each()函数或者普通的for循环对json数据进行遍历;
**注:eval()函数的调用,eval(“(“+data+”)”);
②new Function()—->不建议使用,存在安全和性能问题

function toJson(str){
    var json = (new function("return "+str))();
}

③JSON.parse()
用于从一个字符串中解析出一个json对象。
相对应的可以通过JSON.stringify()将一个json对象转换成一个字符串

var str='{"name":"cpf","age":"23"}';
**单引号写在{}外,每个属性都必须双引号,否则会抛出异常
经JSON.parse(str) 得到:
Object: age:"23"
        name:"cpf"

var obj={a:1,b:2}
经JSON.stringify(obj)得到:
"{"a":1,"b":2}"
*注:JSON.parse()这种方法只支持IE8/Firefox3.5+/Chrome4/Safari4/Opera10 以上版本,这些浏览器都已经接近W3C标准,默认实现了toJSON方法。

④JQuery.getJSON(url,[data],[callback])

$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=?", function(data){
  $.each(data.items, function(i,item){
    $("<img/>").attr("src", item.media.m).appendTo("#images");
    if ( i == 3 ) return false;
  });
});

java解析json:

package cn.test.com;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
public class JSONReaderTest {
    private static final String jsonString = "{\"name\":\"三班\",\"students\":[{\"age\":25,\"gender\":\"female\","
            + "\"grades\":\"三班\",\"name\":\"露西\",\"score\":{\"数据结构\":98,\"JavaEE\":92,"
            + "\"计算机基础\":93},\"weight\":51.3},{\"age\":26,\"gender\":\"male\",\"grades\":\"三班\","
            + "\"name\":\"杰克\",\"score\":{\"网络安全\":75,\"Linux操作系统\":81,\"数据结构\":92},"
            + "\"weight\":66.5},{\"age\":25,\"gender\":\"female\",\"grades\":\"三班\",\"name\":\"莉莉\","
            + "\"score\":{\"网络安全\":95,\"Linux操作系统\":98,\"SQL数据库\":88,\"数据结构\":89},\"weight\":55}]}";
    public static void main(String[] args) {
        //将jsonString转换成jsonObject,{}括起来的
        JSONObject jsonObject = JSONObject.fromObject(jsonString);
        System.out.println("name:"+jsonObject.get("name"));
        //获取students中的数组,[]括起来的
        JSONArray data = jsonObject.getJSONArray("students");
        JSONObject json = null;
        //遍历数据
        for(int i=0;i<data.size();i++){
            json = data.getJSONObject(i);
            System.out.println("grades:"+json.get("grades"));
            JSONObject score = json.getJSONObject("score");
            System.out.println("score:"+score.getInt("数据结构"));
        }
        //还可以将数据保存到javabean中
        //jsonObject.toBean(json,Class.class);
        //或者将获取到的数据保存到list中
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值