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的主要内容,如果未能解决你的问题,请参考以下文章

json-lib使用——JSONObject与JSONArray

json:JSONObject与JSONArray的使用

json-lib --->入门

Json4:使用json-lib解析生成Json

Maven 问题集

JSONObject