android cocos2d-x libjson

android cocos2d-x libjson

说一说关于libjson在android上的编译问题
在这里使用的是libjson_7.6.1版本  下载地址:http://sourceforge.net/projects/libjson/files/ ,也可以访问http://json.org.
接下来将source文件夹和JSONOption.h和libjson.h文件复制到自己的项目当中去,并且在android.mk中将需要编译的文件添加进来,进行编译,报错:

jni/http://www.cnblogs.com/Classes/libjson/_internal/Source/JSONNode.cpp:168:5: error: exception handling disabled, use -fexceptions to enable

大致意思是说需要将c++异常捕获打开  所以需要再android.mk文件的 include $(CLEAR_VARS) 下方添加一句"LOCAL_CPPFLAGS += -fexceptions"

再次进行编译 成功!

接下来说下使用libjson解析json数组,代码如下

复制代码
void HelloWorld::testJson()
{
    
    const char* str="[[\"tiner\",10,\"NBA\"],[\"james\",0621,\"CHINA\"]]";
    JSONNode* node=(JSONNode*)json_parse(str);
    if (node == NULL)
    {
        printf("Invalid JSON Node1\n");
        return;
    }
    
    JSONNODE_ITERATOR i = json_begin(node);
    while (i != json_end(node))
    {
        if (*i == NULL)
        {
            printf("Invalid JSON Node2\n");
            return;
        }
        
        // recursively call ourselves to dig deeper into the tree
        if (json_type(*i) == JSON_ARRAY)
        {
            parseArrJSON(*i);
        }
        
        i++;
    }
    

}

void HelloWorld::parseArrJSON(JSONNODE *n)
{
    if (n == NULL)
    {
        CCLOG("Invalid JSON Node\n");
        return;
    }
    
    JSONNODE_ITERATOR it = json_begin(n);
    while (it != json_end(n))
    {
        if (*it == NULL)
        {
            CCLOG("Invalid JSON Node\n");
            return;
        }
        
        CCLog("NAME:%s",json_as_string(*it));it++;
        CCLog("NUMBER:%d",json_as_int(*it));it++;
        CCLog("WHERE:%s",json_as_string(*it));
        
        ++it;
    }
    
}
复制代码

输出:

Cocos2d: NAME:tiner

Cocos2d: NUMBER:10

Cocos2d: WHERE:NBA

Cocos2d: NAME:james

Cocos2d: NUMBER:621

Cocos2d: WHERE:CHINA

-------------------------------------------------------------------------------------------------------------------------------

cocos2d-x 2.1.3 使用json

复制代码
1.解析同等级:
const char* text= "{\"record\":{\"data\":20130101,\"rate\":23,\"buy\":1},\"record\":{\"data\":45,\"rate\":67,\"buy\":1},\"record\":{\"data\":45,\"rate\":76,\"buy\":10}}";
    
    Json* root= Json_create(text);
    Json* _record=root->child;
    while(_record)
    {
        Json* _date=Json_getItem(_record, "data");
        if(_date->type==Json_Number)
        {
            int date= _date->valueint;
            CCLOG("Date:%d",date);
        }
        
        Json* _rate=Json_getItem(_record, "rate");
        if(_rate->type==Json_Number)
        {
            int rate=_rate->valueint;
            CCLOG("Rate:%d",rate);
        }
        
        Json* _buy=Json_getItem(_record, "buy");
        if(_buy->type==Json_Number)
        {
            int buy=_buy->valueint;
            CCLOG("Buy:%d",buy);
        }

        
        _record=_record->next;
    }
    
    Json_dispose(root);

2.解析不同等级
复制代码
char* text="{\"status\":10,\"body\":{\"force\":5,\"latest\":{\"ver\":\"2.0\",\"ver_num\":\"200\"}}}";
    
    Json* _root= Json_create(text);
    
    Json* _status = Json_getItem(_root, "status");
    if(_status->type==Json_Number)
    {
        int status_text= _status->valueint;
        CCLOG("status_text:%d",status_text);
    }
    
    Json* _bodyArray=Json_getItem(_root, "body");
    if(_bodyArray->type==Json_Object)
    {
        Json* _force=Json_getItem(_bodyArray, "force");
        if(_force->type==Json_Number)
        {
            int _force_text=_force->valueint;
            CCLOG("_force_text:%d",_force_text);
        }

        Json* _latestArray=Json_getItem(_bodyArray, "latest");
        if(_latestArray->type==Json_Object)
        {
            Json* _ver=Json_getItem(_latestArray, "ver");
            if(_ver->type==Json_String)
            {
                const char* _ver_text=_ver->valuestring;
                CCLOG("_ver_text:%s",_ver_text);
            }
            
            Json* _ver_num=Json_getItem(_latestArray, "ver_num");
            if(_ver_num->type==Json_String)
            {
                const char* _ver_num_text=_ver_num->valuestring;
                CCLOG("_ver_num_text:%s",_ver_num_text);
            }
        }

    }

    Json_dispose(_root);

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值