zoukankan      html  css  js  c++  java
  • 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 

  • 相关阅读:
    Encrypted Handshake Message
    RSAParameters Struct
    What if JWT is stolen?
    What's the difference between JWTs and Bearer Token?
    RSA Algorithm Example
    第18届Jolt大奖结果公布
    Ruby on rails开发从头来(windows)(三十六) 调试技巧
    Ruby on rails开发从头来(四十二) ActiveRecord基础(主键和ID)
    YouTube开放基础技术架构 让用户建自家YouTube
    Ruby on rails开发从头来(四十) ActiveRecord基础(Boolean属性)
  • 原文地址:https://www.cnblogs.com/MrGreen/p/3276689.html
Copyright © 2011-2022 走看看