package json; public class User { private String username; private String userpassword; private String userid; public String getuserid(){ return userid; } public String getusername(){ return username; } public String getuserpassword(){ return userpassword; } public void setuserid(String userid){ this.userid=userid; } public void setusername(String name){ this.username=name; } public void setuserpassword(String password){ this.userpassword=password; } }
主函数:通过下面的方式就实现了Json数据的生成,以及获取的过程....
package json; import net.sf.json.JSONObject; public class Json { /** * @param args main(String[] args) { // TODO Auto-generated method stub User user=new User(); /* * 通过JavaBean构建一个Json数据... * */ user.setusername("Darker"); user.setuserpassword("49681888"); user.setuserid("1"); JSONObject json=JSONObject.fromObject(user); System.out.println(json.toString()); } }
第二种JSONObject通过Map来生成Json数据信息....并获取数据信息...
package json; import java.util.HashMap; import net.sf.json.JSONObject; public class Json { /** * @param args main(String[] args) { * 通过map生成Json数据... * */ HashMap<Object, Object>usermap=new HashMap<Object, Object>(); usermap.put("username", "Darker"); usermap.put("userpassword", "49681888"); usermap.put("userid","1"); JSONObject json_1=JSONObject.fromObject(usermap); System.out.println(json_1.toString()); } }
这里我们可以看到,获取到Json数据的方式是使用JSONObject.fromObject()方法实现的...不得不说看了源码部分真是觉得在数据的获取上以及对象的初始化上做的非常的好...Json数据的类型只能是数字,字符串,逻辑值...如果不满足这些情况,返回一个空对象...源码如下...
if (JSONUtils.isNumber(object) || JSONUtils.isBoolean(object) || JSONUtils.isString(object)){ return new JSONObject(); }
public JSONObject(){ this.properties = new ListOrderedMap(); } (); this.nullObject = isNull; }
这里对象的初始化使用了ListOrderMap,ListOrderMap是List和Map优势结合的一种扩展...因为List保存的值是有序的,Map在查询数据的时候是非常高效的..因此结合了这二者的优点存储数据既是有序的,并且在查询的过程也是高效的...ListOrderMap就具备这个特点...扩展了两个集合类...
public static JSONObject fromObject(Object object){ return fromObject(object, new JsonConfig()); }
最后调用fromObject方法...通过JsonConfig的默认配置获取所有的数据信息....
2.Json信息过滤...
我们可以看到,上面通过调用fromObject()方法,使用默认的JsonConfig配置属性,可以获取所有的Json数据信息...但是如果我们想要获取的信息只是Json数据的某一些部分呢?那么我们就需要使用到过滤的方式,把不想要的数据信息直接过滤掉,就可以获取到指定的数据信息了...过滤信息有三种方式...在这里进行介绍...
i.使用一个类实现JsonString接口...覆盖内部的toJsonString()方法...
User类:
实现了userid属性的过滤....