ajson
a utility for serialize C++ and json.
¶¯»ú£º
ΪʲôҪÉè¼Æajson£¿
ÔÚ¹¤×÷Öо³£ÓÐÕâÑùµÄÐèÇ󣬻ñµÃÒ»¶Îjson±àÂëµÄÎı¾£¬½«Ëü½âÎöΪdom¶ÔÏ󣨱ÈÈçrapidjson£©¡£
È»ºó¶ÁÈ¡¸÷½ÚµãµÄÖµ£¬ÎªÁË·½±ã£¬¾³£½«Æä±£´æµ½Ä³¸öÊý¾Ý½á¹¹¡£
È»ºóÕâ¸ödom¾Í²»ÐèÒªÁË£¬ÕâÀïdomµÄ½âÎöºÍ¹¹½¨¾Í¸Ð¾õµ½ÁËÀË·Ñ¡£
Ò²Óз´¹ýÀ´µÄÇé¿ö£¬½«Ò»¸öC++½á¹¹Ì壬ÐòÁл¯µ½dom£¬È»ºó½«domÔÙ´ÎÐòÁл¯µ½Îı¾¡£
ÔٴΣ¬¸Ð¾õµ½ÁËdomµÄÀË·Ñ¡£
Õâʱ£¬ÎÒÏ£ÍûÄÜÓÐÒ»¸öÏñjavescriptÄÇÑù·½±ãµÄ½«jsonÎı¾µ½Êý¾Ý½á¹¹Ö±½Ó·½±ãµÄת»»¡£
ÓÚÊÇajson¾Íµ®ÉúÁË¡£
¼ò½é
struct Person {
std::string Name;
int Age;
};
AJSON(Person , v.Name , v.Age))
Person obj;
char * json= "{ \"Name\" : \"Boo\", \"Age\" : 28}";
ajson::load_from_buff(obj,json);
ÒÔÉÏ´úÂë½âÊÍÁËʲôÊÇAJSON,AJSON»¹Ö§³ÖstlµÄ˳ÐòÈÝÆ÷¡£
ÔÙÀ´¸ö¸´ÔÓµãµÄÀý×Ó
enum PhoneType
{
MOBILE = 0,
HOME = 1,
WORK = 2
};
struct PhoneNumber
{ std::string number;
PhoneType type = MOBILE;
PhoneNumber(std::string const& number_ = "", PhoneType type_ = MOBILE)
:number(number_),type(type_)
{}
};
struct Person
{
std::string name;
int32_t id;
std::string mail;
std::vector phones;
Person(std::string name_ = "" , int32_t id_ = 0, std::string mail_ = "")
:name(name_),id(id_),mail(mail_)
{}
};
struct AddressBook
{
std::vector peoples;
};
AJSON(PhoneNumber, v.number, v.type);
AJSON(Person, v.name, v.id, v.mail, v.phones);
AJSON(AddressBook, v.peoples);
½á¹¹ÌåÖ§³ÖǶÌ×£¬stlÈÝÆ÷Ò²Ö§³ÖǶÌס£
ÌØµã
ajson·´ÐòÁл¯É¨ÃèµÄʱºò£¬Ö±½Ó½«×ÖÃæÁ¿ÀàÐÍͬʱ½âÎö£¬²¢½«½á¹ûÖ±½Ó´æÈë¶ÔÓ¦µÄÊý¾Ý½á¹¹×ֶΡ£
Èç´ËÒ»À´¾Í²»ÐèÒªÁÙʱµÄDOM£¬¼õÉÙÁËÖм䴦ÀíµÄ¹¤×÷ÒÔ¼°ÄÚ´æµÄÉêÇëÊÍ·Å£¬´ó´óÌáÉýÁËÐÔÄÜ¡£
ʹÓ÷½Ê½¼òµ¥£¬Ö»Òª¶¨ÒåÏàÓ¦µÄºêAJSON£¬±ã¿É·½±ãµÄÐòÁл¯/·´ÐòÁл¯²Ù×÷¡£
ÒÀÀµÐ¡£¬ÍêÈ«²»ÒÀÀµµÚÈý·½¿â£¬Ö»ÓÐÒ»¸öÍ·Îļþ£¬Ê¡È¥Á˱àÒëµÄÂé·³¡£
񻵋
Èç¹ûjsonÄÚ²¿¸½´øÁËתÒå·û£¬ajson»á¸Ä¶¯ÔʼÎı¾À´±ÜÃâÐÂÉêÇëÄÚ´æ¡£
Èç¹û²»Ï£ÍûÔʼÎı¾±»Ð޸ģ¬Çë´´½¨Ò»·ÝеĿ½±´¡£
ÓÉÓÚajsonÈ«ÊÇÄÚ´æ²Ù×÷£¬Îļþ¶ÁÈ¡²Ù×÷ʱ£¬½«»áÈ«²¿¶ÁÈëÄڴ棬ËùÒÔ²»ÊʺϴóÎļþ²Ù×÷¡£
ÆäËû
ΪʲôҪѡÔñjson¶ø²»ÊÇxml£¿
ÒòΪjsonµÄÊý¾ÝÃèÊö¸ü·ûºÏC++µÄÊý¾ÝÃèÊö£¬ ¾Ù¸öÀý×Ó£¬xmlÓÐNodeºÍAttributeÁ½ÖÖ·½Ê½£¬ ¸ø³öÒ»¸öC++µÄStructµÄMember field£¬ Ó¦¸Ã¶ÔÓ¦ÄÇÖÖÀàÐÍÄØ£¬Èç¹ûÊÇдÈ룬 ÄÇôд³ÉNodeÄØ»¹ÊÇAttributeÄØ£¬ ÕâÀïÃæ¶ÔÒ»¸ö¶þÒåÐÔÎÊÌâ¡£
AJSONÍêÈ«Ãâ·Ñ£¬Ã»ÓÐÈκÎÏÞÖÆ£¬Ê¹ÓÃboostµÄÊÚȨ·½Ê½¡£
0.2.0°æ±¾
Ïà¶ÔÓÚ0.1.x°æ±¾£¬ajsonûÓй¦ÄÜÉϵÄÔö¼Ó£¬Ö÷ÒªµÄ¸Ä¶¯ÊÇÈ¥µôÁ˶ÔrapidjsonºÍboostµÄÒÀÀµ£¬ÍêÈ«¶ÀÁ¢ÁË¡£
¸üÐÂÄÚÈÝ
ÒÆ³ýboostÒÀÀµ
ÒÆ³ýrapidjsonÒÀÀµ
ʹÓ÷½Ê½Î¢Á¿µ÷Õû
¼ì²âutf8µÄBOMÍ·
¶ÁÈ¡ÐÔÄÜ´ó·ùÌáÉý
Èí¼þÏêÇ飺http://git.oschina.net/lordoffox/ajson/wikis/home
ÏÂÔØµØÖ·£ºhttp://git.oschina.net/lordoffox/ajson
À´×Ô:¿ªÔ´ÖйúÉçÇø

