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
原文链接: https://www.cnblogs.com/mokey/archive/2013/05/10/3072158.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/87943

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月9日 下午11:21
下一篇 2023年2月9日 下午11:22

相关推荐