什么是Json,Json如何使用
javascript object notation:javascript的对象表示法。
这是一种能传递对象的语法,可以是键值对,数组,以及其他对象。
轻量级的数据传输方法。
json格式:
{ key :{ key : [ { key :value ,key :value } ] } },灵活组合。
{ } : 表示一个集合,容器
[ ] :里面装数组,集合
键值对之间用冒号隔开,数组的元素用逗号隔开。
他不是面向对象的,但是较于javascript他更具有分析性,复用性。前后端都可使用。
json的值可以是:int float string boolean 数组 对象。
json方法:
json.parse():该方法用于解析json类型的字符串并且返回对应的值。
json.stringify():该方法同样返回与指定值对应的json字符串。
javascript可以用eval()方法将json文本转换为javascript对象。
var obj = eval ( " (" + json + " ) " );
注意:javascript的eval()方法可编译执行任何javascript代码但是这并不安全,如果使用json解析器将json转换为javascript就会更安全
json格式的转换,对象,集合:(官方的json包和阿里巴巴的json包)
官方:不能一次拿到对象的所有属性,一次只能取单一的值:
eg: user对象:有name id
转换 jsonobject userjson = new jsonobject(user);
获取 string username = userjson.getstring("name");
int userid = userjson.getint("age");
user集合list
转换:jsonarray userjsonarray = new jsonarray(list);
获取:jsonobiect userobj = userjsonarray.getjsonobject(0);
阿里巴巴:fastjson包
eg:user对象:可以直接获得该对象
转换:string userfast = json.tojsonstring(user);----json字符串
获取:user u1 = jsonobject.parseobject(fastuser,user.class);
user集合 : 可以直接获得该对象集合
转换: string fastlist = new jsonarray(list);
获取: list<user> fastlist = jsonarray.parsearray(fastlist,user.class)
注意:测试的时候注意方法名,二者方法名一样,需要全名引用。
1 import com.alibaba.fastjson.json; 2 import org.json.jsonarray; 3 import org.json.jsonexception; 4 import org.json.jsonobject; 5 6 import java.util.arraylist; 7 import java.util.list; 8 9 public class testjson { 10 public static void main(string[] args) throws jsonexception { 11 12 list<user> list = new arraylist<>(); 13 14 user user1 = new user(12,"张三"); 15 user user2 = new user(13,"李四"); 16 list.add(user1); 17 list.add(user2); 18 19 system.out.println("---------------------------"); 20 system.out.println(" 官方jar包测试"); 21 //org.json 转换对象测试 22 jsonobject userobj = new jsonobject(user1); 23 //getstring需要异常抛出防止key值不存在 24 system.out.println("拿到该对象的id值: "+userobj.getstring("id")); 25 //org.json 转换集合测试 26 jsonarray userlist = new jsonarray(list); 27 //get方法拿到集合下标,需要抛出下标不存在的异常 28 system.out.println("拿到该集合下标为0的值: "+userlist.get(0)); 29 user user3 = (user) userlist.get(0); 30 system.out.println("输出对象:"+user3.tostring()); 31 string userstr = new jsonobject(user1).tostring(); 32 system.out.println("直接打印对象:"+user1.tostring()); 33 system.out.println("对象转换json字符串:"+userstr); 34 system.out.println("直接打印集合: "+list); 35 //对象转json字符串 36 string userliststr = new jsonarray(list).tostring(); 37 system.out.println("集合转换json字符串: " + userliststr); 38 system.out.println("---------------------------"); 39 40 //阿里巴巴的fastjson包测试 41 system.out.println("---------------------------"); 42 system.out.println(" 阿里巴巴fastjson包测试"); 43 //com.alibaba.fastjson包测试 由于方法重名,使用全名 44 //直接转换json字符串 45 string userfast = json.tojsonstring(user1); 46 system.out.println("fastjson转换对象为json字符串: "+userfast); 47 string userlistfast = json.tojsonstring(list); 48 system.out.println("fastjson直接转换集合为json字符串: "+userlistfast); 49 50 //json字符串转换为json对象 51 com.alibaba.fastjson.jsonobject userfast2 = json.parseobject(userfast); 52 system.out.println("fastjson将json字符串转换的json对象:"+userfast2); 53 //json字符串转换为json集合 54 com.alibaba.fastjson.jsonarray userlistfast2 = json.parsearray(userlistfast); 55 system.out.println("fastjson将json字符串转换的json集合:"+userlistfast2); 56 } 57 }
--------------------------- 官方jar包测试 拿到该对象的id值: 12 拿到该集合下标为0的值: user{id=12, name='张三'} 输出对象:user{id=12, name='张三'} 直接打印对象:user{id=12, name='张三'} 对象转换json字符串:{"name":"张三","id":12} 直接打印集合: [user{id=12, name='张三'}, user{id=13, name='李四'}] 集合转换json字符串: ["user{id=12, name='张三'}","user{id=13, name='李四'}"] --------------------------- --------------------------- 阿里巴巴fastjson包测试 fastjson转换对象为json字符串: {"id":12,"name":"张三"} fastjson直接转换集合为json字符串: [{"id":12,"name":"张三"},{"id":13,"name":"李四"}] fastjson将json字符串转换的json对象:{"name":"张三","id":12} fastjson将json字符串转换的json集合:[{"name":"张三","id":12},{"name":"李四","id":13}]