您的位置:首页 > 移动开发 > Objective-C

json-lib中的JSONObject和JSONArray

2016-02-04 23:01 363 查看
  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对象


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: