欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

什么是Json,Json如何使用

程序员文章站 2022-03-25 21:55:09
JavaScript Object Notation:javascript的对象表示法。 这是一种能传递对象的语法,可以是键值对,数组,以及其他对象。 轻量级的数据传输方法。 json格式: { key :{ key : [ { key :value ,key :value } ] } },灵活组合 ......

  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}]