JSON(JavaScript Object Notation, JS 對象簡譜) 是一種輕量級的數據互換格局。它基于 ECMAScript (歐洲計較機協會擬定的js規范)的一個子集,采用完全自力于編程說話的文本格局來存儲和暗示數據。簡練和清楚的條理布局使得 JSON 當作為抱負的數據互換說話。 易于人閱讀和編寫,同時也易于機械解析和生當作,并有用地晉升收集傳輸效率。
第一步調:建立一個java項目。
1、file--》new--》project...或者Model...打開建立窗口
2、選擇建立的項目為spring initializr 進入springboot項目建立步調(也可以選擇類型java,建立一個通俗java web項目)
3、輸入項目名字,選擇依靠web(若是不需要可以不選),選擇存放目次-完當作(Finish)
第二步調:在pom.xml中添加net.sf.json-lib依靠
如下所示:在pom.xml文件的dependencies標簽中添加
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
<classifier>jdk15</classifier>
</dependency>
第三步調:編寫代碼。
1、編寫實體類:Student get和set方式本身生當作
public class Student { private int id; private String name; private String sex;
}
2、編寫測試代碼:
2.1需要引入jar包
import net.sf.json.JSONObject;
2.2關頭代碼
public static void testObject(){
Student st = new Student();
st.setId(1);
st.setName("張三");
st.setSex("男");
//轉為json對象
JSONObject json = JSONObject.fromObject(st);
System.out.println(json);
//轉為json字符串
System.out.println(json.toString())
//將json字符串轉為json對象
JSONObject jsonStr = JSONObject.fromObject(json.toString());
//獲得json數據
Object obj = JSONObject.toBean(jsonStr,Student.class);
Student st2 = (Student) obj; System.out.println(st2.getSex());}
3、測試代碼功能。
3.1起首建立一個實體類,并給屬性復制,先實現將實體類轉為json對象,轉為json字符串的功能。
3.2 再實現將一個json字符串轉為具體的實體類的功能。
3.3 可以將利用map調集取代實體類實現同樣結果。
第四步調:List調集的json操作。
具體代碼如下所示:
4.1 需要引入:
import net.sf.json.JSONArraimport java.util.ArrayList;
import java.util.List;
4.2 關頭代碼:
public static void testList(){
//將調集對象轉為json對象,json字符串
List<Student> list= new ArrayList<Student>();
Student st = new Student();
st.setId(1);
st.setName("張三");
st.setSex("男");
Student st2 = new Student();
st2.setId(2);
st2.setName("小麗");
st2.setSex("女");
list.add(st);
list.add(st2);
//將類轉為json對象
JSONArray array=JSONArray.fromObject(list);
System.out.println(array.toString());
//將json對象轉為對應的調集類
JSONArray arrayBean = JSONArray.fromObject(array.toString());
List<Student> listBean = (List<Student>) JSONArray.toCollection(arrayBean,Student.class);
//輸出轉換后的成果
for (Student lst: listBean) {
System.out.println("name:"+lst.getName());
}
}
第五步調:多層實體類處置。
1、實體類:set和get方式本身生當作(set和get方式必需有)
public class Person private String id; private Person pserson;
}
2、關頭測試代碼:實體類Person 屬性仍是Person 時json解析為實體類時一次搞心猿意馬。
import net.sf.json.JSONObject;
public static void main(String[] args) { Person p1 = new Person(); p1.setId("111"); Person p2 = new Person(); p2.setId("222"); Person p3 = new Person(); p3.setId("333"); p1.setPserson(p2); p2.setPserson(p3); JSONObject jsonp = JSONObject.fromObject(p1); System.out.println(jsonp); Object objp = JSONObject.toBean(jsonp,Person.class); Person p4 = (Person) objp; Person p5 = p4.getPserson(); Person p6 = p5.getPserson(); System.out.println(p6.getId());}
3、map屬性中存放map時比力麻煩需要利用MorphDynaBean 或者get一次解析一次。
public static void main(String[] args) { Map map1 = new HashMap(); Map map2 = new HashMap(); Map map3 = new HashMap(); map3.put("value","Male"); map2.put("gender",map3); map1.put("attributes",map2); JSONObject json = JSONObject.fromObject(map1); System.out.println(json); Object obj2 = JSONObject.toBean(json,Map.class); Map map = (Map) obj2; MorphDynaBean map4 = (MorphDynaBean) map.get("attributes"); MorphDynaBean map5 = (MorphDynaBean) map4.get("gender"); String male = (String) map5.get("value"); System.out.println(male); //或者利用get一次解析一次 JSONObject json3 = JSONObject.fromObject(json.get("attributes")); Map map6 = (Map) JSONObject.toBean(json3,Map.class); JSONObject json4 = JSONObject.fromObject(json3.get("gender")); Map map7 = (Map) JSONObject.toBean(json4,Map.class); System.out.println(map7.get("value"));}
第六步調:net.sf.json-lib常用常識點。
5.1:net.sf.json.JSONObject常用方式:
JSONObject json = JSONObject.fromObject(st);
//按照key可以獲得一個Object對象,key可所以字符串和Object
Object obj = json.get("key");
//按照key可以獲得一個布爾值,key是一個字符串
Boolean bo = json.getBoolean("key");
還有一下這些,都是按照key返回具體的類型的數據。
json.getString("key");json.getInt("key");
json.getDouble("key");
json.getJSONArray("key");
json.getJSONArray("key");
json.getLong("key");
這些get開首的按照key獲取value的方式若是key不存在會報錯現實利用結果不是出格好。
可以考慮opt開首的方式,當key不存在時返回默認值,或者自界說需要返回的內容。如下
json.opt("key");json.optInt("key");
json.optInt("key",0);
json.optString("key");
json.optString("key","");
0 篇文章
如果覺得我的文章對您有用,請隨意打賞。你的支持將鼓勵我繼續創作!