JSON

JSON简介 
JavaScript 对象表示法(JavaScript Object Notation),是轻量级的文本数据交换格式。其作用和xml有点类似,但是 比 XML 更小、更快,更易解析。JSON 解析器和 JSON 库支持许多不同的编程语言。

JSON 语法规则 
JSON 对象在花括号中书写,对象可以包含多个名称/值对:如

var jsonObj = { "firstName":"John" , "lastName":"Doe" }
  • 1

•数据在名称/值对中(如name:”tom”) 
•数据由逗号分隔 
•花括号保存对象 
•方括号保存数组

这里介绍一下JSON 值可以是: 
•数字(整数或浮点数) 
•字符串(在双引号中),如

{ "firstName":"John" , "lastName":"Doe" }
  • 1

•逻辑值(true 或 false) 
•数组(在方括号中),如

var employees =
[{ "firstName":"John" , "lastName":"Doe" },
{ "firstName":"Anna" , "lastName":"Smith" },
{ "firstName":"Peter" , "lastName":"Jones" }]
  • 1
  • 2
  • 3
  • 4

可以像这样访问 json对象数组中的第一项:employees[0].lastName; 
可以这样修改数据:employees[1].firstName=”Tom”

•对象(在花括号中) 
•null

javaScript与json对象的互相转换

json对象转成js对象:

json转js字符串:eval(‘(’ + jsonstr + ‘)’); //可以将json字符串转换成json对象(包括数组和字符串!!!),注意需要在json字符外包裹一对小括号; 
另外,因为 JSON 使用 JavaScript 语法,所以json数组对象和js数组对象用法类似,都可以直接jsonArr[index]这样使用;

js对象转成json对象: 
stringify(jsobj):将对象解析成json字符串!如果对象是js数组,解析成的也是json字符串而非数组(所以不能用数组下标方法了);

json在java中的应用 
首先介绍一些json在java中的常用类和方法,所需的jar包如下图

这里写图片描述

常用类:JSONObject(json对象),JSONArray(json数组对象); 
常用方法:

  • JSONObject.fromObject(obj):将java对象转成json对象(返回JSONObject);
  • JSONObject.toBean(obj, Student.class):将json对象转成指定类型的对象(返回的是Object对象,需要强制类型转换);
  • JSONArray.fromObject(obj):将java数组对象转成json数组(返回JSONArray);
  • array.getJSONObject(i):json数组获取下标为i的对象(返回JSONObject 对象);
  • jsonArray.toArray():将json数组转换成相应java数组(返回Object[]);
  • jsonObj.put(name,value):JSONObject实例添加元素;

    下面看具体的代码例子:

        //json转成Object  
        String json = "{id:'1001',name:'张三',age:22}";  
        Student stu = null;  
        JSONObject obj = JSONObject.fromObject(json);  
        stu = (Student)JSONObject.toBean(obj, Student.class);


        //从一个JSON数组得到一个java对象数组  
        String jsonStus = "[{id:1,name:'jack',age:20},                   {id:2,name:'rose',age:20},
        {id:3,name:'admin',age:20}]";  
        JSONArray array = JSONArray.fromObject(jsonStus);  
        Student[] stu = new Student[array.size()];  
        for(int i = 0; i < array.size(); i++){  
            JSONObject jsonObject = array.getJSONObject(i);  
            stu[i] = (Student)JSONObject.toBean(jsonObject, Student.class);  
        }  


        //java对象转换为json格式
        JSONObject obj2=new JSONObject();  
        obj2.put("phone","123456");  
        obj2.put("zip","7890");  
        obj2.put("contact",obj2); 


        //一般数组转换成JSON  
        boolean[] boolArray = new boolean[]{true,false,true};    
        JSONArray jsonArray = JSONArray.fromObject( boolArray );

 

 

关于JSONObject对象的具体使用方法可以参考:http://www.cnblogs.com/hitwtx/articles/2468633.html

posted @ 2018-04-16 17:23  尘埃未定  阅读(97)  评论(0编辑  收藏  举报