项目整理三.excel文件转json
2015-10-10 17:01
716 查看
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"));
项目中多语言配置中,将如下表格转成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"));
相关文章推荐
- 项目整理二.多语言包处理
- 项目整理— .cfg解析
- js的filter的巧用
- IE浏览器中JSON对象兼容性的问题
- jsp中两种include用法的区别
- JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用详解
- Js中的window.parent ,window.top,window.self 详解
- 一些原生js处理的兼容性问题解决方法(自己)
- js字符串中出现次数最多的字符
- Javascript输出
- JavaScript拼接字符串传递多个参数
- javascript定时执行方法
- javascript基础
- 详解基于jsp的文件的上传下载
- js基础
- jsp放在web-inf下的注意事项
- JSON字符串解析(得到属性的值)
- JavaScript模块化
- Javascript detecting a mobile browser
- javascript内置属性——arguments