Java创建和解析Json数据方法(一)——Json知识

(一)JSON简单知识

最近在做几个课程作业,涉及到网络数据传输用到Json,遂记录记录知识。

1.JSON概述

点击打开:JSON官网
  • JSON : JavaScript 对象表示法(JavaScript Object Notation)
  • JSON是轻量级的文本数据存储和交换格式。类似XML。
  • JSON 独立于语言和平台。也就是说在C/C++, C#, Java, JavaScript, Perl, Python等语言中可以使用json语法来进行数据的交换
  • JSON 具有自我描述性,更易理解。
  • JSON比XML更小、更快、更易解析。因为XML中要使用标记来描述数据,往往需要的标记很多,无疑增加了交换产生的流量等。
         如下所示,同样的数据使用JSON(左图)和XML(右图)表示:

2.JSON的两种数据结构

JSON的两种结构:对象(Map)和数组(Array)
2.1 对象(Map)
对象是键值对形式的Map,键和值之间用“ : ”隔开,两个Map之间用“, ”隔开,多个Map被包括在大括号{   }之间形成JSON对象。
[java] view plain copy
  1. {  
  2.     key1:value1,  
  3.     key2:value2,  
  4.     key3:value3,  
  5.     ......  
  6. }  
2.2 数组(Array)
数组结构被包括在中括号[  ]之间,其中包括0或多个以” , ”分隔的Map对象。
[java] view plain copy
  1. [  
  2.     {  
  3.         key1:value1,  
  4.         key2:value2   
  5.     },  
  6.     {  
  7.          key3:value3,  
  8.          key4:value4     
  9.     }  
  10. ]  

3.JSON数据示例

①简单json对象
一个json对象,对象包括2个属性,name和age。
[java] view plain copy
  1. {  
  2.     name:"jtzeng",  
  3.     age:"21" //注意:与结束括号相邻的键值对后面没有逗号  
  4. }  
②简单json数组
一个json数组,数组里面包括2个对象,每个对象包括2个属性。
[java] view plain copy
  1. [  
  2.     {  
  3.         "name":"aaa",  
  4.         "age":"21"  
  5.     },  
  6.     {  
  7.         "name":"bbb",  
  8.         "age":"21"  
  9.     }  
  10. ]  
③稍微复杂

一个json对象,包括2个属性,data和result,而result对应的是一个json数组,该数组里面包含两个json对象。

[java] view plain copy
  1. {    
  2.     "data":[    
  3.         {    
  4.             "planning_content":"do homework",    
  5.             "planning_date":"2015-12-18",    
  6.             "planning_id":1    
  7.         },    
  8.         {    
  9.             "planning_content":"Go shopping.",    
  10.             "planning_date":"2015-12-19",    
  11.             "planning_id":2    
  12.         }    
  13.     ],    
  14.     "result":"true"    
  15. }   
④再复杂点点

一个json对象,包含3个json数组,其中数组programmers和authors包含各一个json对象,而musicians包含两个json对象。

[java] view plain copy
  1. {  
  2.     "programmers":[  
  3.         {  
  4.             "firstName":"pfirstname",  
  5.             "lastName":"plastname",  
  6.             "email":"pmail"  
  7.         }  
  8.           
  9.     ],  
  10.     "authors":[  
  11.         {  
  12.             "firstName":"afirstname",  
  13.             "lastName":"alastname",  
  14.             "genre":"agenre"  
  15.         }  
  16.           
  17.     ],  
  18.     "musicians":[  
  19.         {  
  20.             "firstName":"mfirstname1",  
  21.             "lastName":"mlastname2",  
  22.             "instrument":"guitar"  
  23.         },  
  24.         {  
  25.             "firstName":"mfirstname2",  
  26.             "lastName":"mlastname2",  
  27.             "instrument":"piano"  
  28.         }     
  29.     ]  
  30. }  
⑤相对复杂

一个json数组,里面存了一个JSON对象,这个对象里面呢只有一个institute的对象,该对象下有name和grade属性,grade对应一个json数组,该数组下面有三个对象。

[java] view plain copy
  1. [  
  2.     {  
  3.         "institute":{  
  4.             "name":"Software Institute",  
  5.             "grade":[  
  6.                 {  
  7.                     "name":"freshman",  
  8.                     "class":[  
  9.                         {  
  10.                             "no.":1,  
  11.                             "students":61  
  12.                         },  
  13.                         {  
  14.                             "no.":2,  
  15.                             "students":62  
  16.                         },  
  17.                         {  
  18.                             "no.":3,  
  19.                             "students":63  
  20.                         }  
  21.                     ]  
  22.                 },  
  23.                 {  
  24.                     "name":"sophomore",  
  25.                     "class":[  
  26.                         {  
  27.                             "no.":1,  
  28.                             "students":51  
  29.                         },  
  30.                         {  
  31.                             "no.":2,  
  32.                             "students":52  
  33.                         },  
  34.                         {  
  35.                             "no.":3,  
  36.                             "students":53  
  37.                         }  
  38.                     ]  
  39.                 },  
  40.                 {  
  41.                     "name":"junior",  
  42.                     "class":[  
  43.                         {  
  44.                             "no.":1,  
  45.                             "students":41  
  46.                         },  
  47.                         {  
  48.                             "no.":2,  
  49.                             "students":42  
  50.                         },  
  51.                         {  
  52.                             "no.":3,  
  53.                             "students":43  
  54.                         }  
  55.                     ]  
  56.                 }  
  57.             ]  
  58.         }  
  59.     }  
  60. ]  

后面将分别记录用org.json、json-lib和Gson包解析json数据。

原文地址:http://blog.csdn.net/Zen99T/article/details/50351589

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值