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对象。

{
    key1:value1,
    key2:value2,
    key3:value3,
    ......
}

2.2 数组(Array)

数组结构被包括在中括号[  ]之间,其中包括0或多个以” , ”分隔的Map对象。

[
    {
        key1:value1,
        key2:value2 
    },
    {
         key3:value3,
         key4:value4   
    }
]

3.JSON数据示例

①简单json对象

一个json对象,对象包括2个属性,name和age。

{
	name:"jtzeng",
	age:"21" //注意:与结束括号相邻的键值对后面没有逗号
}

②简单json数组

一个json数组,数组里面包括2个对象,每个对象包括2个属性。

[
	{
		"name":"aaa",
		"age":"21"
	},
	{
		"name":"bbb",
		"age":"21"
	}
]

③稍微复杂

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

 

{  
    "data":[  
        {  
            "planning_content":"do homework",  
            "planning_date":"2015-12-18",  
            "planning_id":1  
        },  
        {  
            "planning_content":"Go shopping.",  
            "planning_date":"2015-12-19",  
            "planning_id":2  
        }  
    ],  
    "result":"true"  
} 

 

④再复杂点点

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

 

{
	"programmers":[
		{
			"firstName":"pfirstname",
			"lastName":"plastname",
			"email":"pmail"
		}
		
	],
	"authors":[
		{
			"firstName":"afirstname",
			"lastName":"alastname",
			"genre":"agenre"
		}
		
	],
	"musicians":[
		{
			"firstName":"mfirstname1",
			"lastName":"mlastname2",
			"instrument":"guitar"
		},
		{
			"firstName":"mfirstname2",
			"lastName":"mlastname2",
			"instrument":"piano"
		}	
	]
}

 

⑤相对复杂

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

 

[
	{
		"institute":{
			"name":"Software Institute",
			"grade":[
				{
					"name":"freshman",
					"class":[
						{
							"no.":1,
							"students":61
						},
						{
							"no.":2,
							"students":62
						},
						{
							"no.":3,
							"students":63
						}
					]
				},
				{
					"name":"sophomore",
					"class":[
						{
							"no.":1,
							"students":51
						},
						{
							"no.":2,
							"students":52
						},
						{
							"no.":3,
							"students":53
						}
					]
				},
				{
					"name":"junior",
					"class":[
						{
							"no.":1,
							"students":41
						},
						{
							"no.":2,
							"students":42
						},
						{
							"no.":3,
							"students":43
						}
					]
				}
			]
		}
	}
]

 

 

 

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

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值