【Java基础】Json小结
来源:互联网 发布:mac跟win 编辑:程序博客网 时间:2024/06/01 10:14
一、宏观
1、Json是什么?
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,特点:易于人阅读和编写 。具体参考:
(1)维基百科:https://zh.wikipedia.org/wiki/JSON
(2)Json官网:http://www.json.org.cn/
2、Json用在哪里?
处理Javascript 和web服务器端的之间数据交换 (例如Ajax)。
3、为什么使用Json?
1.数据格式比较简单, 易于读写, 格式都是压缩的, 占用带宽小。
2.易于解析这种语言, 客户端JavaScript可以简单的通过eval()进行JSON数据的读取。
3.因为JSON格式能够直接为服务器端代码使用, 大大简化了服务器端和客户端的代码开发量, 但是完成的任务不变, 且易于维护。
二、Json基本语法
1)Json语法视为JS语法的子集,内容包括:
1.名称/值对数据表示
2.大括号持有的对象和每个名称后跟“:”(冒号),名称/值对的分离,(逗号)。
3.方括号持有数组和值,(逗号)分隔。
2)JSON支持以下两种数据结构:
1.名称/值对的集合: 此数据结构支持由不同的编程语言。
2.值的有序列表: 它包括数组,列表,向量或序列等。
基本语法示例:
{ "book": [ { "id":"01", "language": "Java", "edition": "third", "author": "Herbert Schildt" }, { "id":"07", "language": "C++", "edition": "second" "author": "E.Balagurusamy" }]}
3)基本数据类型支持
如上图所示,在Json中,有8中数据类型支持。强调其中两种数据类型的写法:
1.Array
{ "books": [ { "language":"Java" , "edition":"second" }, { "language":"C++" , "lastName":"fifth" }, { "language":"C" , "lastName":"third" } ]}2.Object
{ "id": "011A", "language": "JAVA", "price": 500,}这里仅仅需要注意,在Json语法中,[]表示数组,{}表示对象就ok。
三、Json在Java语言中的使用
(1)安装JSON模块:JSON.simple
(2)常用对象:JsonObject,JsonArray
(3)JSON和Java实体之间的映射
相比上述的Json语法中的8种数据类型,这里少了whitespace和value,这两个正好在Java中也不存在。
(4)最常用的两个Json对象
1.JsonObject
1)“put”方法
import net.sf.json.JSONObject;public class TestJson { private static JSONObject json = null;public static void main(String[] args) {json = new JSONObject();json.put("id","1");json.put("name","张三");json.put("pwd","123456");System.out.println(json);}}put操作用于向json对象中添加数据,添加元素和Map集合的方式一样。程序执行结果:{"id":"1","name":"张三","pwd":"123456"}。
2)“element”方法
如上demo,可以在给json添加属性时,使用
json.element("id","1");这种形式。
3)将json对象放进一个JavaBean当中
结合上述demo
User user = new User();//通过其Key获取对应的Value.user.setId(Integer.parseInt(json.getString("id")));这样,就将json对象,存入到了JavaBean对象当中。
2.JsonArray
1)"add"方法
JSONArray jsonArray = new JSONArray();jsonArray.add(0,"张三");jsonArray.add(1,"张四");jsonArray.add(2,"张五");jsonArray.add(3,"张六");System.out.println(jsonArray);//["张三","李四","王五","小三"]System.out.println(jsonArray.get(1));//李四其余参考API:http://docs.oracle.com/javaee/7/api/javax/json/JsonArray.html
3.Object转String
key:用Object对象构造一个JSONObject或者JSONArray对象,然后调用它的toString()方法即可。
(1)JsonObject
Book book=new Book();book.setName("Java");book.setPrice(52.3f);JSONObject object=JSONObject.fromObject(book);System.out.println(object.toString()); //如果直接object.toString(),可以看看,仅仅是一个HashCode
(2)JsonArray
Book book=new Book();book.setName("Java");book.setPrice(52.3f);Book book2=new Book();book2.setName("C");book2.setPrice(42.3f);List list=new ArrayList();list.add(book);list.add(book2);JSONArray arry=JSONArray.fromObject(list);System.out.println(arry.toString());结果:[{"name":"Java","price":52.3},{"name":"C","price":42.3}]
4.String到Object
key:要先用String对象构造一个JSONObject或者JSONArray对象
(1)JsonObject
String json="{name:'Java',price:52.3}"; JSONObject object=JSONObject.fromObject(json);System.out.println(object.get("name")+" "+object.get("price"));(2)JsonArray
String json="[{name:'Java',price:52.3},{name:'C',price:42.3}]"; JSONArray array=JSONArray.fromObject(json); for(int i=0;i< array.size();i++){ Map o=(Map)array.get(i); System.out.println(o.get("name")+" "+o.get("price")); }
5.String到Bean
(1)单个Bean对象
String json="{name:'Java',price:52.3}";JSONObject object=JSONObject.fromObject(json);Product product=(Product)JSONObject.toBean(object,Product.class);System.out.println(product.getName()+" "+product.getPrice());(2)数组Bean
String json="[{name:'Java',price:52.3},{name:'C',price:42.3}]";JSONArray array=JSONArray.fromObject(json);Product[] products=(Product[]) JSONArray.toArray(array,Product.class);for(Product p:products){ System.out.println(p.getName()+" "+p.getPrice());}更多使用请参考API。
6.网上搜到的一个自定义Json操作类(静态)
import java.util.List; import java.util.Map; import net.sf.json.JSONArray; import net.sf.json.JSONObject; public class JsonHelper { //从普通的Bean转换为字符串 public static String getJson(Object o){ JSONObject jo=JSONObject.fromObject(o); return jo.toString(); } //从Java的列表转换为字符串 public static String getJson(List list){ JSONArray ja=JSONArray.fromObject(list); return ja.toString(); } //从Java对象数组转换为字符串 public static String getJson(Object[] arry){ JSONArray ja=JSONArray.fromObject(arry); return ja.toString(); } //从json格式的字符串转换为Map对象 public static Map getObject(String s){ return JSONObject.fromObject(s); }//从json格式的字符串转换为List数组 public static List getArray(String s){ return JSONArray.fromObject(s); } //从json格式的字符串转换为某个Bean public static Object getObject(String s,Class cls){ JSONObject jo=JSONObject.fromObject(s); return JSONObject.toBean(jo, cls); } //从json格式的字符串转换为某类对象的数组 public static Object getArray(String s,Class cls){ JSONArray ja=JSONArray.fromObject(s); return JSONArray.toArray(ja, cls); } }
That's all.
- 【Java基础】Json小结
- Java 基础小结
- Java基础小结
- Java基础数据类型小结
- Java基础小结
- java基础小结
- java编程基础小结
- Java基础小结
- Java语言基础小结
- java基础小结
- Java基础--小结
- Java基础小结
- java语法基础小结
- java基础小结
- JAVA语言基础课后小结
- Java基础之多线程(小结)
- JAVA面向对象基础小结
- java面向对象基础小结
- 路由表建立算法
- sgx模拟器
- 于是他错误的点名开始了-解题报告
- linux中的环境变量文件区别总结
- Eclipse导入项目时出现小红叉却找不到错误解决办法一
- 【Java基础】Json小结
- 命令行运行jmeter脚本,并查看结果文件 待..
- 颠覆平庸:在技术上持续精进
- hdu 1150 最小点覆盖 Machine Schedule
- 自动内存管理机制_垃圾收集器与内存分配策略
- 170719 Keras重复运行结果不一致问题
- 【微信小程序】微信小程序中掉进的坑之一
- 【51Nod】1126 求递推序列的第N项
- Binutils 工具集