• json 文件解析与应用


    第一步:首先弄一个 json 文件   我这里成为 config.json 内容如下

    {
       "1000":
        {
            "id":1000,
            "desc":"中华人民共和国"
        },
        "1001":
        {
            "id":1001,
            "desc":"中国人民银行"
        }
    }

    第二步:添加解析 json 文件的函数    记得 首先声明一个全局的 map 容器 或者成员的 map 容器  map_ForText

    int HelloWorld::parse_json()
    {
        unsigned long size = 0;
        unsigned char* pData = nullptr;
    
        pData = CCFileUtils::sharedFileUtils()->getFileData("config.json","rb",&size);
        if( !pData )
            return -1;
    
        CSJson::Reader j_reader;
        CSJson::Value root_value;
    
        if( !j_reader.parse((const char*)pData, (const char*)(pData+size), root_value) )
        {
            CCLOG("/n%s/n", j_reader.getFormattedErrorMessages().data());
            CC_SAFE_DELETE_ARRAY(pData);
            return -1;
        }
    
        for( CSJson::Value::iterator iter=root_value.begin(); iter!=root_value.end(); ++iter )
        {
            int id = 0;
            string str = "";
    
            CSJson::Value &v = (*iter)["id"];
            if( !v.empty() )
            {
                id = v.asInt();
            }
    
            v = (*iter)["desc"];
            if( !v.empty() )
            {
                str = v.asString();
            }
            map_ForText.insert(make_pair(id,str));
        }
    
        return 0;
    }

    第三步:添加获得字符串的函数

    const char* HelloWorld::get_text(int id)
    {
        CCLOG("This is HelloWorld::get_text");
        auto iter = map_ForText.find(id);
        if( iter != map_ForText.end() )
        {
            return (iter->second).c_str();
        }
        return "";
    }

    第四步:使用cocoStudio编辑器 编辑一个界面  创建一个 文本框(UILabel)  到这个界面上    如下图

    然后将其导出 ,这里我创建时命名为 NewProject  这样生成后  导出大图  将会导出文件 NewProject_1.ExportJson

    第五步:把这个界面加载到 场景中并初始化 这个 UILabel 的内容 为 “中华人民共和国” (对应 .json 文件的 id 为1000)

    parse_json();  //首先调用解析文件的函数
    
    UILayer* widLayer = UILayer::create();
    UIWidget* widget = CCUIHELPER->createWidgetFromJsonFile("NewProject_1.ExportJson");
    UILabel* lab_text = static_cast<UILabel*>(widget->getChildByName("lab_text_info"));
    const char* text = get_text(1000);
    lab_text->setText(text);
    
    widLayer->addWidget(widget);
    this->addChild(widLayer);


    这样之后,就会出现我们期待已久的效果,添加文件中的中文 输出到屏幕上  如下如所示:(当然在界面上我还添加了一些其他的元素 ,不过这不影响我们期待的效果)

    “中华人民共和国” 即 对应 我们之前的 json 文件 id:1000 所对应的内容

    初来乍到,请多赐教 ……  如有意见或建议,请留言 18310094097@163.com 

  • 相关阅读:
    OpenGL3:幼儿园篇 第三章 几何变换
    OpenCV2:应用篇 三维重建
    Word绑定博客园
    Android大学课件SQLite3 数据库操作
    Android Studio导入jar包
    安卓Android基础四天
    学习Android过程中遇到的未解决问题(个人笔记,细节补充,随时更新)
    学习Android过程中遇到的问题及解决方法——电话监听
    学习Android过程中遇到的问题及解决方法——网络请求
    安卓Android基础第三天——数据库,ListView
  • 原文地址:https://www.cnblogs.com/MrGreen/p/3276689.html
Copyright © 2020-2023  润新知