json-lib中的JSONObject和JSONArray
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了json-lib中的JSONObject和JSONArray相关的知识,希望对你有一定的参考价值。
json-lib是用来完成beans,collections,maps,java数组 ,XML与JSON之间互相转换的jar包,json-lib依赖于其它几个jar包(我试过所有的jar包都用最新版本的,结果是会报错的,这说明版本之间还是有配套关系的,合适的才是最好的!),如下图所示,可以到这里下载!
而在json-lib中JSONObject和JSONArray是用得很频繁的两个类。
JSONObject是无序的键值对的集合,是用“花括号”括起来的一系列键值对;例如:{"id":"1","name":"jack","score":99}
JSONArray是有序的值的序列,是用“中括号”括起来的一个数组;例如:[{"id":"1","name":"jack","score":99}],或["zhangsan","lisi","wangwu"],又或
[{"id":"1","name":"jack","score":99},{"id":"2","name":"rose","score":88}]
JSONObject只能表示一个JSON对象,例如:{"id":"1","name":"张三","age":20,"salary":6000};多个JSON对象就要用JSONArray的方式表示(JSONArray中可以有多个JSON对象),例如:[{"id":"1","age":20,"name":"张三","salary":6000},{"id":"2","age":30,"name":"李四","salary":9000},{"id":"3","age":40,"name":"王五","salary":12000}]。一个JSON对象既可以用JSONObject表示,也可以用JSONArray表示;多个JSON对象只能用JSONArray表示,JSONArray中可以装有多个JSON对象。
例如:如果这么写
就会报这样的错误
,说明多个Json对象就不能用JSONObject表示了。
应该这么写才对
List<Emp> emps=new ArrayList<Emp>();
Emp e1=new Emp("1","张三",20,6000);
Emp e2=new Emp("2","李四",30,9000);
Emp e3=new Emp("3","王五",40,12000);
emps.add(e1);
emps.add(e2);
emps.add(e3);
JSONArray jsonArray=JSONArray.fromObject(emps);
String jsonJAVA=jsonArray.toString();
不管后端是用JSONObject还是用JSONArray生成Json,传到前端的AJAX都是Java格式json的字符串,都要用eval函数将其解析为JS格式的Json对象才能在JS中正常的使用。
例如:
ajax.onreadystatechange=function(){
if(ajax.readyState==4){
if(ajax.status==200){
var jsonJAVA=ajax.responseText;//得到后端传过来的Java格式的json字符串
var jsonJS=eval("("+jsonJAVA+")");//转换为JS格式的JSON对象
以上是关于json-lib中的JSONObject和JSONArray的主要内容,如果未能解决你的问题,请参考以下文章