[w3cschool tydef]
什么是 JSON ?
JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)
JSON 是轻量级的文本数据交换格式
JSON 独立于语言 *
JSON 具有自我描述性,更易理解
* JSON 使用 JavaScript 语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言。
JSON 语法是 JavaScript 语法的子集。
为什么要用json
在异步应用程序中发送和接收信息时,可以选择以纯文本和 XML 作为数据格式。掌握 Ajax 的这一期讨论另一种有用的数据格式 JavaScript Object Notation(JSON),以及如何使用它更轻松地在应用程序中移动数据和对象。
简单地说,JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从 Web 客户机传递给服务器端程序。这个字符串看起来有点儿古怪(稍后会看到几个示例),但是 JavaScript 很容易解释它,而且 JSON 可以表示比名称/值对更复杂的结构。
特点
类似 XML
JSON 是纯文本
JSON 具有“自我描述性”(人类可读)
JSON 具有层级结构(值中存在值)
JSON 可通过 JavaScript 进行解析
JSON 数据可使用 AJAX 进行传输
相比 XML 的不同之处
没有结束标签
更短
读写的速度更快
能够使用内建的 JavaScript eval_r() 方法进行解析
使用数组
不使用保留字
使用 JSON
读取 JSON 字符串
用 eval_r() 处理 JSON 字符串
json c++ api 很不错的博客,全了。
http://hi.baidu.com/jiangyangw3r/blog/item/bfedc1ce59b23e0c92457e14.html
c++打json包的一个例子
#include
class JsonGuard
{
public:
JsonGuard(json_object *obj) : m_obj(obj){}
~JsonGuard(){
json_object_put(m_obj);
}
private:
json_object *m_obj;
};
void testjson()
{
cout << "test json begin!" << endl;
json_object *obj = json_object_new_object();
JsonGuard jsonGuard(obj);
// 打一个学生的json格式的信息
int id = 1;
json_object_object_add(obj, "id", json_object_new_int(id));
string name("huangfengxiao");
json_object_object_add(obj, "name", json_object_new_string(name.c_str()));
json_object *subobj = json_object_new_object();//subobj
string mathadd("A-404");
json_object_object_add(subobj, "math", json_object_new_string(mathadd.c_str()));
string chineseadd("A-404");
json_object_object_add(subobj, "chineseadd", json_object_new_string(chineseadd.c_str()));
json_object_object_add(obj, "subjectaddr", subobj);
const char *jsData = json_object_to_json_string(obj);
cout<<jsData<<endl;
cout << "test json end!" << endl;
}