感觉以后的工作中会用到更多的前端知识,而json又是前后端转换的比较流行的语言,所以学习一下,然后再慢慢深入。
1.json格式分为数组和对象,其实在我看来就是存储方式的不同,一个是{“name”:“admin”,“age”:“12”}对象形式的。一个是 [{“name”:“admin”,“age”:“12”},{“name”:“admin”,“age”:“12”}]形式的,根据不同的需求去调用相应的方法。
2.json的jar包有很多,从大到小林林总总,但是基本分为两个可以概括,一个是json-lib下的包,一个是json-org下的包。前者比后者更加具有重量性,随之而来的就多了相应的许多方法,但是后者也有其好处,那就是方便,快捷,灵活,且论功能的话和前者相差并不大。
3.接下里就是代码实例了。因为我个人比较喜欢json-org,所以我就直接用这个进行实例演示了,其实json-libjar包下的用法也就是一个调用方法不一样,大家可以自行百度即可。但是要注意的是,千万要注意jar包别导错了。我这边json-libjar包的地址是http://download.csdn.net/download/t_james/10148219,json-orgjar包的地址是http://download.csdn.net/download/t_james/10148269,后者里面有相应的代码进行借鉴。
4.代码实例
我这边是先新建一个实体类,到了后面是便于调用。
public class Stu {
private int age;
private String name;
private String sex;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
其次,新建一个测试类,用三种不同的方法进行存储和显示,分别是字符串,map数组,实体bean三种类型。
public static void AddSelect() throws JSONException{
//传入字符串类型
String strjson = "{'age':'11','name':'admin'}";
JSONObject json = new JSONObject(strjson);
System.out.println("名字和年龄分别是"+json);
//传入map类型
Map<String, Object> map = new HashMap<String,Object>();
map.put("age", 99);
map.put("name", "JAMES");
map.put("sex","男");
JSONObject jsons = new JSONObject(map);
System.out.println("map传的值是"+jsons);
//传入实体
Stu stu = new Stu();
stu.setAge(66);
stu.setName("kebi");
stu.setSex("男");
//JSONObject beanjsons =JSONObject.f(stu);
//System.out.println("传过来的实体值是"+stu);
}
public static void resolve() throws JSONException{
JSONObject jsonObject =new JSONObject();
jsonObject.put("age", "111");
jsonObject.put("name","syso");
System.out.println(jsonObject);
}
public static void main(String[] args) throws Exception{
Test1 t = new Test1();
//t.AddSelect();
t.resolve();
}
接下来是相应的数据显示
名字和年龄分别是{"name":"admin","age":"11"}
map传的值是{"name":"JAMES","age":99,"sex":"男"}
{"name":"syso","age":"111"}
接下来就是json-org下面的jsonarray和jsonobject之间的互相转化。至于jsonarray是什么,简单来讲就是json数组,使用中括号,但是要注意的是jsonarray里面的格式也是json键值对的形式。
public static void main(String[] args) throws JSONException {
JSONObject jsonObject = new JSONObject("{'name':'tom','age':'11'}");
JSONArray jsonArray = new JSONArray("['sex','nnn']");
//JSONObject内嵌JSONObject
JSONObject jsonObject1 = new JSONObject();
jsonObject1.put("object1", jsonObject);
jsonObject1.put("object2", jsonObject);
//JSONObject内嵌JSONArray
JSONObject jsonObject2 = new JSONObject();
jsonObject2.put("JSONArray1", jsonArray);
jsonObject2.put("JSONArray2", jsonArray);
//JSONArray内嵌JSONArray
JSONArray jsonArray1 = new JSONArray();
jsonArray1.put(jsonArray);
jsonArray1.put(jsonArray);
//JSONArray内嵌JSONObject
JSONArray jsonArray2 = new JSONArray();
jsonArray2.put(jsonObject);
jsonArray2.put(jsonObject);
System.out.println("JSONObject内嵌JSONObject:" + "\r" + jsonObject1.toString());
System.out.println("JSONObject内嵌JSONArray:" + "\r" + jsonObject2.toString());
System.out.println("JSONArray内嵌JSONArray:" + "\r" + jsonArray1.toString());
System.out.println("JSONArray内嵌JSONObject:" + "\r" + jsonArray2.toString());
}
JSONObject内嵌JSONObject:
{"object2":{"name":"tom","age":"11"},"object1":{"name":"tom","age":"11"}}
JSONObject内嵌JSONArray:
{"JSONArray1":["sex","nnn"],"JSONArray2":["sex","nnn"]}
JSONArray内嵌JSONArray:
[["sex","nnn"],["sex","nnn"]]
JSONArray内嵌JSONObject:
[{"name":"tom","age":"11"},{"name":"tom","age":"11"}]
以上就是相应的转换代码和转换最后的显示结果。
最后就是json字符串的解析了,我觉得这个是比较重要的,但是我现在也只是弄了一个皮毛,大家不要笑我哈。
//解析字符串
public static void main(String[] args) throws JSONException {
JSONObject jsonObject1 = new JSONObject();
jsonObject1.put("name", "tom");
jsonObject1.put("age", "11");
System.out.println("解析字符串:" + "\r" + jsonObject1.getString("name"));
//解析对象
JSONObject jsonObject = new JSONObject("{'name':'tom','age':'11'}");
JSONObject jsonObject2 = new JSONObject();
jsonObject2.put("jsonObject", jsonObject);
System.out.println("解析对象:");
System.out.println(jsonObject2.getJSONObject("jsonObject").toString());
}
解析字符串:
tom
解析对象:
{"name":"tom","age":"11"}
当然,我这是比较浅显的解析,到了后面学习比较深入的知识在分享出来。