json的认识

发表时间:2017-05-12 16:14:22 浏览量( 17 ) 留言数( 0 )

学习目标:

1、了解Java的历史

2、为什么要学习Java语言

3、端正学习态度


学习过程:

一、JSON简介

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。

JSON建构于两种结构:

  • 键/值对集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。

  • 值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。

对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。如下图:

attcontent/c3bf9e15-4da3-48cf-a913-b3f0fbbc37d9.png

数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。

attcontent/8375d00a-3507-4fb9-ae3a-35144d169bbd.png

值(value)可以是双引号括起来的字符串(string)、数值(number)、true、false、 null、对象(object)或者数组(array),这些结构可以嵌套。 通过嵌套我们就可以描述现实生活中的几乎所有的示例了。

二、示例

我们先看看下面这个例子:

一个用户有姓名,年龄,电话信息和多个地址信息。电话信息包括固定电话和移动电话两个属性,地址信息包括城市信息和邮编两个属性。

想上面这种描述我们已经做过很多次这样的练习了,我们可以使用java的javaBean描述,使用数据库的表设计,使用XML描述,今天我们就再多学习一种描述方式JSON,JSON事实上很上面的描述是相通的,尤其是和XML的功能差不多。

代码实现:

<script type="text/javascript">
 function showJSon(){
    var user={
      name:"刘德华",
      age:34,
      phone:{homephone:0398383,iphone:112},
      address:[{city:"广州",post:510000},{city:"北京",post:33444}]
    };
 }
</script>

访问上面的定义

    //js访问
alert(user.phone.homephone);
alert(user.address.length);
alert(user.address[1].city);

三、JavaBean和JSON的转换

以前我们学习XML的时候使用dom4j工具实现XML和javaBean对象之间的转换,那么JSON和javaBean之间可以非常方便转换吗?其实我们可以直接使用字符串的拼接就可以实现javaBean和json的转换,当然我们也可以使用第三方包,快速的实现这个功能的。例如使用JSON-lib包实现,当然还有更加简单的gson.jar。今天我们先介绍一下JSON-lib包,gson包我们以后学习android时候再讲解。

导入相关包,比较多:

commons-lang.jar

commons-beanutils.jar

commons-collections.jar

commons-logging.jar

ezmorph.jar

json-lib-2.2.2-jdk15.jar

实现把javaBean对象转换为json字符串格式

   public static void main(String[] args) {    User user=new User();    user.setName("刘德华");    user.setAge(34);    Phone phone=new Phone();    phone.setHomephone("32424");    phone.setIphone("23424");    user.setPhone(phone);    List<Address> address=new ArrayList<Address>();    Address add1=new Address();    add1.setCity("广州");    add1.setPost("510000");    Address add2=new Address();    add2.setCity("北京");    add2.setPost("12313");    address.add(add1);    address.add(add2);    user.setAddress(address);    JSONObject jsonObject=JSONObject.fromBean(user);    System.out.println(jsonObject.toString());}

打印如下:

{"phone":{"iphone":"23424","homephone":"32424"},"address":[{"post":"510000","city":"广州"},{"post":"12313","city":"北京"}],"name":"刘德华","age":34}

也可以从JSON解析出对象值

   //json字符串转java代码public static void json2JAVA() {    String jsonStr = "{"password":"123456","username":"张三"}";    JSONObject jsonObj = JSONObject.fromString(jsonStr);    String username = jsonObj.getString("username");    String password = jsonObj.optString("password");    System.out.println("json--->java
 username=" + username    + "	 password=" + password);}