java中的JSON对象的使用

申明:没工作之前都没听过JSON,可能是自己太菜了。可能在前台AJAX接触到JSON,这几天要求在纯java的编程中,返回JSON字符串形式。

网上有两种解析JSON对象的jar包:JSON-lib.jar和json.jar,这里主要介绍JSON-lib.jar。

jar包地址如下:

json-lib-2.4-jdk15.jar所需全部JAR包.rar

一、JSON-lib.jar还依赖以下jar包:

  1. commons-lang.jar
  2. commons-beanutils.jar
  3. commons-collections.jar
  4. commons-logging.jar
  5. ezmorph.jar
  6. json-lib-2.2.2-jdk15.jar

二、应用

  JSON也是以key-value形式存在的。key是字符串,value可以是基本类型、JSONArray、JSONObject.

  JSONArray:[],望文生义也知道,他是数组形式,又可要放多个JSON

  JSONObject:{}就放一个JSON。

  由于他们的他们可以嵌套形式就比较多。

三、输出JSON实例考虑到对[]、{}进行对比,区别重复的变量,对变量名进行了首字母大写,显得不规范了。

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
public class JSONTest {

    public static void main(String[] args) {
        JSONObject container1 = new JSONObject();
        container1.put("ClassName", "高三一班");
        System.out.println(container1.toString());

        JSONArray className = new JSONArray();
        className.add("高三一班");
        container1.put("className", className);
        System.out.println(container1.toString());

        JSONObject classInfo = new JSONObject();
        classInfo.put("stuCount", 50);
        classInfo.put("leader", "rah");
        container1.put("classInfo", classInfo);
        System.out.println(container1);

        JSONObject ClassInfo = new JSONObject();
        JSONArray stuCount = new JSONArray();
        stuCount.add(50);
        JSONArray leader = new JSONArray();
        leader.add("rah");
        ClassInfo.put("stuCount", stuCount);
        ClassInfo.put("leader", leader);
        container1.put("ClassInfo", ClassInfo);
        System.out.println(container1);

        JSONArray students = new JSONArray();
        JSONObject studentOne = new JSONObject();
        studentOne.put("name", "张麻子");
        studentOne.put("sex", "男");
        studentOne.put("age", 12);
        studentOne.put("hobby", "java develop");

        JSONObject studentTwo = new JSONObject();
        studentTwo.put("name", "王瘸子");
        studentTwo.put("sex", "男");
        studentTwo.put("age", 13);
        studentTwo.put("hobby", "C/C++ develop");

        students.add(studentOne);
        students.add(studentTwo);
        container1.put("students", students);
        System.out.println(container1);

        JSONArray Students = new JSONArray();
        JSONObject StudnetOne = new JSONObject();
        JSONArray name1 = new JSONArray();
        name1.add("张麻子");
        JSONArray sex1 = new JSONArray();
        sex1.add("男");
        JSONArray age1= new JSONArray();
        age1.add("12");
        JSONArray hobby1 = new JSONArray();
        hobby1.add("java develop");
        StudnetOne.put("name", name1);
        StudnetOne.put("sex", sex1);
        StudnetOne.put("age", age1);
        StudnetOne.put("hobby", hobby1);

        JSONObject StudnetTwo = new JSONObject();
        JSONArray name2 = new JSONArray();
        name2.add("王瘸子");
        JSONArray sex2 = new JSONArray();
        sex2.add("男");
        JSONArray age2= new JSONArray();
        age2.add("13");
        JSONArray hobby2 = new JSONArray();
        hobby2.add("C/C++ develop");
        StudnetTwo.put("name", name2);
        StudnetTwo.put("sex", sex2);
        StudnetTwo.put("age", age2);
        StudnetTwo.put("hobby", hobby2);

        Students.add(StudnetOne);
        Students.add(StudnetTwo);
        container1.put("Students", Students);
        System.out.println(container1);

        JSONArray teachers = new JSONArray();
        teachers.add(0,"王老师");
        teachers.add(1,"李老师 ");
        container1.put("teachers", teachers);
        System.out.println(container1);

        JSONArray Teachers = new JSONArray();
        JSONObject teacher1 = new JSONObject();
        teacher1.put("name", "小梅");
        teacher1.put("introduce","他是一个好老师");

        JSONObject teacher2 = new JSONObject();
        teacher2.put("name", "小李");
        teacher2.put("introduce","他是一个合格的老师");

        Teachers.add(0,teacher1);
        Teachers.add(1,teacher2);
        container1.put("Teachers", Teachers);
        System.out.println(container1);
    }
}

运行结果:

{"ClassName":"高三一班"}
{"ClassName":"高三一班","className":["高三一班"]}
{"ClassName":"高三一班","className":["高三一班"],"classInfo":{"stuCount":50,"leader":"rah"}}
{"ClassName":"高三一班","className":["高三一班"],"classInfo":{"stuCount":50,"leader":"rah"},"ClassInfo":{"stuCount":[50],"leader":["rah"]}}
{"ClassName":"高三一班","className":["高三一班"],"classInfo":{"stuCount":50,"leader":"rah"},"ClassInfo":{"stuCount":[50],"leader":["rah"]},"students":[{"name":"张麻子","sex":"男","age":12,"hobby":"java develop"},{"name":"王瘸子","sex":"男","age":13,"hobby":"C/C++ develop"}]}
{"ClassName":"高三一班","className":["高三一班"],"classInfo":{"stuCount":50,"leader":"rah"},"ClassInfo":{"stuCount":[50],"leader":["rah"]},"students":[{"name":"张麻子","sex":"男","age":12,"hobby":"java develop"},{"name":"王瘸子","sex":"男","age":13,"hobby":"C/C++ develop"}],"Students":[{"name":["张麻子"],"sex":["男"],"age":["12"],"hobby":["java develop"]},{"name":["王瘸子"],"sex":["男"],"age":["13"],"hobby":["C/C++ develop"]}]}
{"ClassName":"高三一班","className":["高三一班"],"classInfo":{"stuCount":50,"leader":"rah"},"ClassInfo":{"stuCount":[50],"leader":["rah"]},"students":[{"name":"张麻子","sex":"男","age":12,"hobby":"java develop"},{"name":"王瘸子","sex":"男","age":13,"hobby":"C/C++ develop"}],"Students":[{"name":["张麻子"],"sex":["男"],"age":["12"],"hobby":["java develop"]},{"name":["王瘸子"],"sex":["男"],"age":["13"],"hobby":["C/C++ develop"]}],"teachers":["王老师","李老师 "]}
{"ClassName":"高三一班","className":["高三一班"],"classInfo":{"stuCount":50,"leader":"rah"},"ClassInfo":{"stuCount":[50],"leader":["rah"]},"students":[{"name":"张麻子","sex":"男","age":12,"hobby":"java develop"},{"name":"王瘸子","sex":"男","age":13,"hobby":"C/C++ develop"}],"Students":[{"name":["张麻子"],"sex":["男"],"age":["12"],"hobby":["java develop"]},{"name":["王瘸子"],"sex":["男"],"age":["13"],"hobby":["C/C++ develop"]}],"teachers":["王老师","李老师 "],"Teachers":[{"name":"小梅","introduce":"他是一个好老师"},{"name":"小李","introduce":"他是一个合格的老师"}]}

四、遍历JSON实例

以上面的输出的JSON字符串进行按顺序给它遍历

     String ClassName1 = (String) container1.get("ClassName");
        System.out.println("ClassName data is: " + ClassName1);

        JSONArray className1 = container1.getJSONArray("className");
        System.out.println("className data is: " + className1);

        JSONObject classInfo1 = container1.getJSONObject("classInfo");
        System.out.println("classInfo data is: " + classInfo1);

        JSONObject ClassInfo1 = container1.getJSONObject("ClassInfo");
        System.out.println("ClassInfo data is: " + ClassInfo1);

        JSONArray students1 = container1.getJSONArray("students");
        System.out.println("students data is: " + students1);

        JSONArray Students1 = container1.getJSONArray("Students");
        System.out.println("Students data is: " + Students1);

        JSONArray teachers1 = container1.getJSONArray("teachers");
        for(int i=0; i < teachers1.size(); i++){
            System.out.println("teahcer " + i + " is: "+ teachers1.get(i));
        }

        JSONArray Teachers1 = container1.getJSONArray("Teachers");
        for(int i=0; i < Teachers1.size(); i++){
            System.out.println("Teachers " + i + " is: "+ Teachers1.get(i));
        }

遍历结果:

ClassName data is: 高三一班
className data is: ["高三一班"]
classInfo data is: {"stuCount":50,"leader":"rah"}
ClassInfo data is: {"stuCount":[50],"leader":["rah"]}
students data is: [{"name":"张麻子","sex":"男","age":12,"hobby":"java develop"},{"name":"王瘸子","sex":"男","age":13,"hobby":"C/C++ develop"}]
Students data is: [{"name":["张麻子"],"sex":["男"],"age":["12"],"hobby":["java develop"]},{"name":["王瘸子"],"sex":["男"],"age":["13"],"hobby":["C/C++ develop"]}]
teahcer 0 is: 王老师
teahcer 1 is: 李老师
Teachers 0 is: {"name":"小梅","introduce":"他是一个好老师"}
Teachers 1 is: {"name":"小李","introduce":"他是一个合格的老师"}

上面包括了大部份的JSON的嵌套形式,可能有忽略的也可以参考上面的内容。

时间: 2024-08-13 15:14:52

java中的JSON对象的使用的相关文章

Java中关于Json对象类型和字符串类型之间互相转化的问题

Java中关于Json格式转化Object,Map,Collection类型和String类型之间的转化在我们实际项目中应用的很是普遍和广泛.最近工作的过程中也是经常有,因此,自己封装了一个JsonUtil.java类. 所需要的jar包:slf4j-jdk14-1.5.6.jar,slf4j-api-1.5.6.jar------>此两个jar包是slf4j日志jar包 jackson-annotations-2.1.1.jar,jackson-core-2.1.1.jar,jackson-d

在java中构建json对象,返回给前端页面

// 给客户端返回一个json对象 StringBuilder sb = new StringBuilder("{"); sb.append("\"name\"").append(":").append(user.getName()); sb.append(","); sb.append("\"gender\"").append(":").appe

JAVA中,JSON MAP LIST的相互转换

1 JSON包含对象和数组,对应于JAVA中的JSONObject,JSONArray 2 String 转JSON对象 JSONObject.fromObject("String"); String 转JSON数组 JSONArray.fromObject("String"); 3 List 和 JSON互转 JSONObject.toBean() JSONArray.fromObject(List) JAVA中,JSON MAP LIST的相互转换,布布扣,bu

JAVA中使用JSON进行数据传递

在接口的访问和数据的传输方面使用的比较多的是使用JSON对象来操作格式化数据:在服务器端采用JSON字符串来传递数据并在WEB前端或者Android客户端使用JSON来解析接收到的数据. 首先,在JAVA中使用JSON需要引入 org.json 包(点击 这里 可以下载相应的JAR包!), 并在程序中引入相应的JSON类: import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; 其

java中Comparable实现对象的比较

/* class A implements Comaprable<A>{ } 那么 A x = new A(); 类关系图 Object o = A; Object Comparable c = A; | Comparable A 实现了 Comparable 接口嘛 |-----|-----A 所以有 o instanceof A == true; o instanceof Comparable == true; 例如ArrayList添加对象实例时,对象实例添加之后先向上转型为Object

Java中的null对象也可以访问static成员变量和方法

声明:本博客为原创博客,未经允许,不得转载!小伙伴们如果是在别的地方看到的话,建议还是来csdn上看吧(链接为 http://blog.csdn.net/bettarwang/article/details/26515271),看代码和提问.讨论都更方便. 一般来说,一个类的对象要在实例化之后才可以访问类中的成员变量和方法.如果它还是null,通常意义上我们就认为它不能访问类中的成员.实际上确实不提倡这样,而且null对象确实不能访问实例成员(变量和方法),否则会引发NULLPointerExc

在js中 把 json对象转化为String对象的方法

方法1: 使用js的扩展方法 ** * json对象转字符串形式 */ function json2str(o) { var arr = []; var fmt = function(s) { if (typeof s == 'object' && s != null) return json2str(s); return /^(string|number)$/.test(typeof s) ? "'" + s + "'" : s; } for (v

Java中利用MessageFormat对象实现类似C# string.Format方法格式化

我们在写C#代码的时候常常会使用到string.Format("待格式化字符串{0},{1},....",参数1,参数2,...),来格式化字符串,特别是拼接字符的时候,这种方式使得代码更为直观清楚. 最近使用java时候却java的string.Format与c#重点string.Format用法不一样,java中的string.format更类似于C语言的sprintf()方法 例如: String str=null; str=String.format("Hello,%

Java中字节与对象之间的转换

近期公司里面用到了消息队列,而正如我们知道的是消息队列之间的是通过二进制形式的.以下就分享一下java中字节与对象之间的转换. 主要是用到了ByteArrayOutputStream和ObjectOutputStream两个输出流,以及ByteArrayInputStream和ObjectInputStream两个输入流. 废话不多说了,直接上代码吧! /** * @FileName: ByteToObject.java * @Package:com.test * @Description: T