javascript
Eclipse创建JSON文件及其他操作
目錄
一、創建:
二、格式化:
三、JSON與Javascript:?
四、JSON與字符串相互轉換:
1.字符串轉JSON對象:JSON.parse()
2.JSON對象轉字符串:JSON.stringify()
五、JSON與Java交互:
六、FastJson序列化(單個對象)與Json注解:
1.序列化:JSON.toJSONString()
2.JSON注解@JSONField的使用
3.反序列化:JSON.parseObject(,)
六、JSON序列化、反序列化(集合):
1.序列化:JSON.toJSONString()
2.反序列化:JSON.parseArray(,)
一、創建:
右鍵單擊項目的WebContent——new——選擇File——寫文件名時,后綴為".json"。如下圖所示:
???
二、格式化:
選中JSON文件的內容——點擊Souce——Format(Ctrl+Shift+F)。
原來:
格式化后:
三、JSON與Javascript:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript">var json=[{"name": "Mary","sex": 01,"job": "teacher"},{"name": "Jhon","sex": 00,"job": "manager","customers": [{"cname": "Frank"},{"cname": "Li"},{"cname": "Chen"}]}];console.log(json); //瀏覽器控制臺調試for(var i=0;i<json.length;i++){ var emp=json[i];document.write("<h1>");document.write(emp.name);document.write(","+emp.sex);document.write(","+emp.job);document.write("</h1>");if(emp.customers !=null){document.write("<h2>----");for(var j=0;j<emp.customers.length;j++){ //注意var customer=emp.customers[j];document.write(customer.cname+",");}document.write("</h2>");}}
</script>
</head>
<body></body>
</html>
四、JSON與字符串相互轉換:
JSON對象是瀏覽器內置對象,但IE8以下的版本不支持。
1.字符串轉JSON對象:JSON.parse()
發現個小問題:(ˉ▽ˉ;)...生成html文件時,選File生成的頁面不會有結構。選HTML File生成的html文件才會有結構。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>字符串轉JSON</title><script type="text/javascript">var str="{\"class_name\":\"五年級三班\" }";//直接加""會與字符串沖突,在雙引號前加\進行原義輸出var json=JSON.parse(str);//JSON是內置對象console.log(json);console.log(str);document.write("班級:"+json.class_name);</script> </head> <body></body> </html>上面Object表示是一個對象,可以直接使用。而下面只是一個JSON樣式的字符串,不能直接訪問。
但注意原始字符串必須是JSON樣式才能轉換!
2.JSON對象轉字符串:JSON.stringify()
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>JSON轉字符串</title> <script type="text/javascript">var json={"class_name":"五年級三班"};var str=JSON.stringify(json);console.info(json); //打印輸出console.info(str);var json2={}; //JSON對象的另一種初始化方式json2.class_name="五年級四班";json2.floor="四樓";json2.teacher="龔老師";console.info(json2); </script> </head> <body></body> </html>五、JSON與Java交互:
JSON逐漸替代xml成為保存對象、數據傳輸的一個首選。
JSON工具包:把Java對象轉化為JSON 或 把JSON轉化為Java對象的第三方組件。比如有FastJson(阿里巴巴開發)、Jackson(國外老牌)、Gson(谷歌開發)、Json-lib等。
FastJson是阿里巴巴著名的JSON序列化與反序列化工具包。其在國內有大量 使用者,優點有:API簡單、效率高等。
獲取見該教程:https://blog.csdn.net/qq_43542011/article/details/118281143
六、FastJson序列化(單個對象)與Json注解:
1.序列化:JSON.toJSONString()
①Employee.java
②FastJsonSample1.java
package com.immoc.json;import java.util.Calendar;import com.alibaba.fastjson.JSON;public class FastJsonSample1 {public static void main(String[] args) {Employee employee=new Employee();employee.setEid(01001);employee.setEname("蕭瑾瑜");employee.setJob("項目經理");employee.setSalary(20000f);employee.setCname("開發部");Calendar c=Calendar.getInstance(); //用日歷類對時間初始化c.set(2021, 5, 27, 0, 0, 0); //月份是從0開始的,這里表示6月employee.setDate(c.getTime()); //獲取日期對象// 接下來把employee轉化成JSON對象:FastJson中提供了JSON對象來完成對象與JSON字符串的互相轉化String json=JSON.toJSONString(employee); //把employee對象中所有不為空的屬性都JSON序列化System.out.println(json);}}2.JSON注解@JSONField的使用
①結果圖中,“date”后面的一串數字是時間戳代表了從1970年到現在的毫秒數,需要以可讀方式轉換,借助JSON的注解進行格式化,修改如下:
結果如下:
②可以對鍵進行格式化:
結果:
③如果不對其中一項序列化:
結果:工資這項已消失不見
3.反序列化:JSON.parseObject(,)
六、JSON序列化、反序列化(集合):
1.序列化:JSON.toJSONString()
如圖,在包中新增名為FastJsonSample2的類
package com.immoc.json;import java.util.ArrayList; import java.util.List; import com.alibaba.fastjson.JSON;public class FastJsonSample2 {public static void main(String[] args) {List empList=new ArrayList();for (int i = 1; i <=100; i++) { //模擬100個員工Employee employee=new Employee();employee.setEid(0001+i); //加i使員工編號不重復employee.setEname("員工"+i);empList.add(employee);}String json=JSON.toJSONString(empList); //還是用toJSONString()System.out.println(json);}}其中,當FastJSON的屬性值為null,會自動忽略輸出。
2.反序列化:JSON.parseArray(,)
在FastJsonSample2.java中增加如下的代碼:
List<Employee> emps=JSON.parseArray(json,Employee.class); //反序列化:原始的JSON數組對象轉化出一個個的Employee對象for(Employee e:emps) {System.out.println(e.getEid()+":"+e.getEname());}總結
以上是生活随笔為你收集整理的Eclipse创建JSON文件及其他操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 嵌入式真的没前途?
- 下一篇: 操作系统,你搞定了没?