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 

原文地址:https://www.cnblogs.com/MrGreen/p/3276689.html