json解析

来源:互联网 发布:数据库在线学习网站 编辑:程序博客网 时间:2024/04/27 13:21

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中    }}
0 0