项目整理三.excel文件转json

来源:互联网 发布:全包半包和清包 知乎 编辑:程序博客网 时间:2024/05/22 14:27

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])  );

                        }

                    }elseif(it_key->value.IsString())

                    {

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

                       addStringRes(fold, key, v  );

                    }

                }

            }

        }



}


void addStringRes(constt_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(constt_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];

            }elseif(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