Json 语法 格式

Json 语法 格式


1 JSON对象的表示

对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。

每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。

JSON语法

表示方法:{key1:value1,key2:value2,......}

json采用key/value的方式表示对象。

例如:

{"id":1001,"name":"Lenny"}


2 JSON数组表示方式

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

使用“,”(逗号)分隔。

JSON语法

表示方法:[value1,value2,value3,......]

例如: {"City":["shanghai","beijing","shenzhen"]}


3 对象数组标识方法

综合1,2,

表示方法:

[{key1:value1,key2:value2},{key3:value3,key4:value4}{key5:value5,key6:value6},......]

4 值的表示方式

值(value)可以是双引号括起来的字符串(string)、数值(number)、truefalse、 null、对象

(object)或者数组(array)。这些结构可以嵌套。

JSON语法

表示方法:

string:"string";

number:1265.12;

object:{id:"123",name:"chen"};

array:["name",12323,"2009-11-12"];

boolean:true,false;

null:null;

 

5 字符串表示方法

字符串(string)是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符

(character)即一个单独的字符串(character string)。

JSON语法

表示方法:

表示方法与java相类似:“value”。

 

6 数值表示方法

数值(number)也与C或者Java的数值非常相似。除去未曾使用的八进制与十六进制格式。除去一些编码

细节。

JSON语法

表示方法:

12,-1.2,5.5

 

7 Json表示对象及对象数组

<1> 用JSON形式来表示User对象:

{"UserID":11, "Name":"Truly", "Email":"zhuleipro◎hotmail.com"};
<script> var User = {"UserID":11, "Name":"Truly", "Email":"zhuleipro◎hotmail.com"}; </script>
<2>用JSON形式来表示User对象数组:


{"UserID":11, "Name":{"FirstName":"Truly","LastName":"Zhu"}, "Email":"zhuleipro◎ hotmail.com"}, 
{"UserID":12, "Name":{"FirstName":"Jeffrey","LastName":"Richter"}, "Email":"xxx◎xxx.com"}, 
{"UserID":13, "Name":{"FirstName":"Scott","LastName":"Gu"}, "Email":"xxx2◎xxx2.com"} 
]

<script> var UserList = [ {"UserID":11, "Name":{"FirstName":"Truly","LastName":"Zhu"}, "Email":"zhuleipro◎hotmail.com"}, {"UserID":12, "Name":{"FirstName":"Jeffrey","LastName":"Richter"}, "Email":"xxx◎xxx.com"}, {"UserID":13, "Name":{"FirstName":"Scott","LastName":"Gu"}, "Email":"xxx2◎xxx2.com"} ]; alert(UserList[0].Name.FirstName); </script>
 
  
Json语法解析最常用的库有:jsoncpp 和 boost
参考:
http://jsoncpp.sourceforge.net/
boost property_tree
※注意:值得注意的是,多线程中boost解析json语句会崩溃。	
	两种解决方法:
		boost多线程解析json时,加上下面的宏
#define BOOST_SPIRIT_THREADSAFE
#include <boost/property_tree/json_parser.hpp>
		②加个全局线程锁。
			std::mutex g_Mutex;
			boost::property_tree::wptree pt;
			{
				std::lock_guard<std::mutex> lock(g_Mutex);
				boost::property_tree::json_parser::read_json( jsonIStream, pt );
			}
			
 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值