ºìÁªLinuxÃÅ»§
Linux°ïÖú

ajson 0.2.0°æ·¢²¼£¬·É¿ìµÄJSON C++ÐòÁл¯¿â

·¢²¼Ê±¼ä:2016-02-19 15:20:01À´Ô´:ºìÁª×÷Õß:baihuo
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

À´×Ô:¿ªÔ´ÖйúÉçÇø
ÎÄÕÂÆÀÂÛ

¹²ÓÐ 0 ÌõÆÀÂÛ