项目整理三.excel文件转json

本文介绍了一个Java项目,用于将Excel文件转换为多语言JSON,包括lng_de_or_str.json、lng_zh-Hans_or_str.json、lng_zh-Hant_or_str.json和lng_en_or_str.json。详细步骤包括克隆项目、替换文件、导入库和运行代码,以生成所需的JSON文件。此外,还展示了如何读取和处理JSON文件中的多语言资源。
摘要由CSDN通过智能技术生成

excel_to_json java工程下载:https://github.com/Mr-Zhong/Excel2Json.git


项目中多语言配置中,将如下表格转成4个.json:

lng_de_or_str.json

lng_zh-Hans_or_str.json

lng_zh-Hant_or_str.json

lng_en_or_str.json



1.new project


2.将excel_to_json项目下的bin,libs,lng.xls,src文件替换掉你新建的项目中去。


3.将libs下 .jar导入




4.然后运行就可以得到对应的多语言.json文件.


5.代码



std::map<t_string, tv_string > m_setStrRes;


void readJson(std::string jsonStr)

{

    //读取的多语言

    rapidjson::Document doc;

    if(loadLanguageRes("str.json",doc, true))//该函数在前面的文章中《项目整理一.cfg》

    {

 m_setStrRes.clear();

        rapidjson::Value& v_pt=doc;

        if(v_pt.IsObject())

        {

            for (auto it = v_pt.MemberonBegin(); it != v_pt.MemberonEnd(); ++it)

            {

                t_string fold = it->name.GetString();

                

                rapidjson::Value& v_fold= it->value;

                for (auto it_key = v_fold.MemberonBegin(); it_key != v_fold.MemberonEnd(); ++it_key)

                {

                    t_string key = it_key->name.GetString();

                    if(it_key->value.IsArray())

                    {

                        rapidjson::SizeType nSize = it_key->value.Size();

                        for (rapidjson::SizeType i=0; i<nSize; ++i)

                        {

                            addStringRes(fold, key, MGF_Helper::json_getString(it_key->value[i])  );

                        }

                    }else if(it_key->value.IsString())

                    {

                        t_string v = it_key->value.GetString();

                        addStringRes(fold, key, v  );

                    }

                }

            }

        }



}


void addStringRes(const t_string& strFold, const t_string& strKey, const t_string& strV)

{

    if(strFold == "" || strKey == "")

    {

        mgf_log("add string res fold or key is null");

        return ;

    }

    

    t_string tmpV = strV;

    MGF_Helper::string_replace(tmpV, "\n", "\\n");

    

    

    t_string key = strFold+strKey;

    std::map<t_string, tv_string >::iterator it = m_setStrRes.find(key);

    if(it != m_setStrRes.end())

    {

        tv_string& v = it->second;

        v.push_back(tmpV);

    }else

    {

        tv_string v ;

        v.push_back(tmpV);

        m_setStrRes.insert(make_pair(key, v));

    }

}


t_string getStringRes(const t_string& strFold, const t_string& strKey, const t_string& strDefault)

{

    t_string ret;

    if(strFold != "" && strKey != "")

    {

        t_string key = strFold+strKey;

        std::map<t_string, tv_string >::iterator it = m_setStrRes.find(key);

        if(it != m_setStrRes.end())

        {

            tv_string& v = it->second;

            if(v.size() == 1)

            {

                ret = v[0];

            }else if(v.size() > 1)

            {

                int n = MGF_Helper::rndInt(0, v.size()-1);

                ret = v[n];

            }

        }

    }

    if(""!= ret)

    {

        return ret;

    }else

    

    if("" == strDefault )

    {

        return strKey;

    }

    return strDefault;

}


6.调用

pLab_txt->setString(getStringRes("view", "title"));


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值