json 学习总结下:
其实json就是一种数据格式,参照了javascript(以下简称js)的语法,
一个js对象:{“name1”:value,”name2”:value}
一个js数组:[{“name1”:value,”name2”:value},{“name1”:value,”name2”:value}]
JSON的数据格式刚好和js的对象、数组一样
JSON主要是要学会它的API(尤其在java里)
在js里的两个API
1.符合json格式的字符串→js对象或数组 JSON.parse(str)
2.js对象或数组→json格式字符串 JSON.stringify(obj);
说说JAVA里的JSON应用
1.首先要导包 ps:
记一次未解决的异常:java.lang.NoClassDefFoundError:net/sf/json/JSONObject
通过自己试验这个包最好放在web-root→web-inf→lib下:否则会发生上诉错误,
参考地址:http://www.cnblogs.com/gossip/p/5369670.html
猜测,如果不放在tomcat里估计会得不到包,反正后来放了就好了
如图:
2.需要了解json在java里的几个重要的API
①Java对象→JSON字符串 JSONObject.fromObject(obj).toString();
②Java数组/集合→JSON字符串JSONArray.fromObject(objs).toString();
③JSON字符串→Java对象 分两步:
JSONObject jsonObject = JSONObject.fromObject(jsonStr);
Friend f = (Friend)JSONObject.toBean(jsonObject, Friend.class);
④JSON字符串→Java数组或集合分两步:
数组:String jsonStr = "[{\"name\":\"Lucy\",\"age\":18},{\"name\":\"Dalin\",\"age\":20},{\"name\":\"Tom\",\"age\":29}]";
JSONArray jsonArr = JSONArray.fromObject(jsonStr);
Friend[] fs = (Friend[])JSONArray.toArray(jsonArr,Friend.class);
集合:String jsonStr = "[{\"name\":\"Lucy\",\"age\":18},{\"name\":\"Dalin\",\"age\":20},{\"name\":\"Tom\",\"age\":29}]";
JSONArray jsonArr = JSONArray.fromObject(jsonStr);
List<Friend> fs = (List<Friend>)JSONArray.toCollection(jsonArr, Friend.class);
关键点在于json字符串一定要符合json格式。
另外这是在知道java类的前提下,可以多一个参数“类名.class”,如果是个Object,不知道具体类的时候,可以省略这个参数,那就转成一个集合
写到这里不得不说一下Hibernate获取数据时遇到的一些问题。
看截图吧!
通过试验,那两句话果然是多余的,因为result就是一个list
为了给客户端得到一个json字符串,这里想尽办法将hibernate获得的数据,进行封装,这样客户端处理起来就简单了。
以后应该有很好的框架吧,这里我就是这么写的,因为这里hibernate查询,我用了排序,所以获得的并非一个Product对象,我想应该是有hql语句可以办到的,但是我还没学到hibernate,等学到了再说吧
PS20160922,补充内容:关于日期转换成json,参考地址:http://blog.youkuaiyun.com/btt2013/article/details/50155949