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包:

  commons-lang.jar

  commons-beanutils.jar

  commons-collections.jar

  commons-logging.jar

  ezmorph.jar

  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的嵌套形式,可能有忽略的也可以参考上面的内容。

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-12-02 07:56:29

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

java中处理JSON的开源工具都有些什么?那个比较好用?

问题描述 java中处理JSON的开源工具都有些什么?那个比较好用? java中对json进行一些便捷的操作,目前我用的是alibaba的fastjson 其它还有些什么呢?我在maven资源库中找到的有下图这些:其中twitter和org.json我貌似都用过.那么这些工具到底哪个比较方便?可以方便的实现java对象和json之间的互相转化. 解决方案 jackson这个也不错,我们的项目中就是使用这个的,直接使用下面的代码引入jar包 org.codehaus.jacksonjackson-

js接收并转化Java中的数组对象的方法_javascript技巧

在做项目时,要向ocx控件下发命令,就要在js中得到java中的对象,然后拼成一种格式,下发下去...当对象是一个时比较简单,但如果对象是一个数组时,就略显麻烦了. 开始我以为有简单的方式,可以直接进行内容的转化,后来发现不可以,网上说js与java没有桥接的东西,所以呢: 我的解决方案是:在action层,将java的对象数组转化为Json串,而在js中,再把json转化为数组对象. 1.将java的对象数组转化为Json串: 要用到两个类: net.sf.json.JSONObject ne

浅谈java中对集合对象list的几种循环访问_java

java中对集合对象list的几种循环访问的总结如下  1 经典的for循环  public static void main(String[] args) { List<String> list = new ArrayList(); list.add("123"); list.add("java"); list.add("j2ee"); System.out.println("=========经典的for循环======

string-关于java中String的对象问题

问题描述 关于java中String的对象问题 String s = ""abc"";String s1 =""a""+""b""+""c"";看有关书籍介绍说这上面两句代码内存中创建了4个对象,但是也有些资料上说是只创建了一个对象,因为编译器会把字符串常量在编译过程中直接相加?还有就是 String a = ""abc&quo

在 JavaScript 中创建 JSON 对象

<html> <body> <h2>在 JavaScript 中创建 JSON 对象</h2> <p> Name: <span id="jname"></span><br /> Age: <span id="jage"></span><br /> Address: <span id="jstreet">&

java中是不是只有对象可以接收数据?

问题描述 java中是不是只有对象可以接收数据? java中是不是只有对象可以接收数据,类需要实例化成对象才可以接收数据,用什么方法发送数据呢 解决方案 如果是同一个进程,就自己通过监听,或消息等机制,如果跨进程,tcp,udp等传输协议都可以 解决方案二: 把对象保存到请求的Scope中,或者定义全局的常量,还有dto也可以传递数据. 解决方案三: 基本数据类型,数组集合等等都可以接收数据,本质上都是给内存中的数据一个引用.传参方式很多,构造器,带参方法等等.web中一般就get.post

java中的context对象、request对象、response对象都可以存放什么数据?

问题描述 java中的context对象.request对象.response对象都可以存放什么数据? java中的context对象.request对象.response对象在向应用服务器发送请求的过程中都会用到,分别可以存放哪些数据呢?求大神解答,不胜感激! 解决方案 [NET]随时随地访问DB连接,Page对象,Session对象, Request对象, Response对象等Response对象Response对象 解决方案二: 一般来讲存放的是javabean,当然javabean可以

关于java中尝试改变对象的引用 ,这是老师出的一道题 麻烦大家了!

问题描述 关于java中尝试改变对象的引用 ,这是老师出的一道题 麻烦大家了! 6.尝试改变对象的引用 change (Object j){ o=new Obj; } 不知道这是什么意思,请各位指教.麻烦各位说一下意思,谢谢! 解决方案 就是将引用指向新的Object对象 解决方案二: 写完全了吗?题就是这样? 解决方案三: 你老师是要你体会多态么? 解决方案四: Obj是啥?没写全吧? 解决方案五: 刚刚打错了 正确的是这样 change (Object o) { o=new Obj; } 不

java中变量和对象之间的关系问题

问题描述 java中变量和对象之间的关系问题 java中变量和对象之间的关系问题 是对象属于变量,还是变量属于对象 它们是充要的还是充分不必要还是必要不充分的 我不是上面的数学逻辑属于适合不适合描述对象和变量之间的关系 解决方案 一般来说,变量类型会叫基本类型,比如Integer等,还有就是对象变量,就是引用对象的变量. 对象中可以定义变量.