c++ json字符串转换成map管理
在cocos2dx for lua中,我们经常通过lua的table传入c++使用,然后早c++层操作数据。
实现步骤大致如下:
table->string->c++层->通过rapidjson解析->存放在map中管理
在lua中,转换table大致如下
local tbl = {}
tbl["fang"] = 1
tbl["jian"] = 1.4
tbl["heng"] = true
tbl["fjh"] = 12345677
tbl["what"] = "fuck"
local str = json.encode(tbl)
--打印str:
{"fang":1,"jian":1.4,"heng":true,"fjh":12345677,"what":"fuck"}
将str传入c++层,通过rapidjson::Document进行解析str,然而,json字符串中的数据类型不确定,
但触控已经封装好了一个CCLValue类给我们使用,它能存放任何值简单的数据类型进行保存,然后需要的
时候再进行获取。这里提供CCLValue.h和CCLValue两个文件下载:
http://pan.baidu.com/s/1c06Z0xM
以下方法是通过字符串转换成map保存的方法:
map<string,LValue> TestLValue::jsonStringToMap(const string& jsonString)
{
rapidjson::Document doc;
doc.SetObject();
doc.Parse<rapidjson::kParseDefaultFlags>(jsonString.c_str());
map<string,LValue> m;
for(rapidjson::Value::MemberIterator iter = doc.MemberonBegin();iter != doc.MemberonEnd();iter++)
{
const char * key = iter->name.GetString();
const rapidjson::Value& val = iter->value;
if(val.IsDouble())
m.insert(make_pair(key, LValue(val.GetDouble())));
else if(val.IsBool())
m.insert(make_pair(key, LValue(val.GetBool())));
else if(val.IsInt())
m.insert(make_pair(key, LValue(val.GetInt())));
else if(val.IsInt64())
m.insert(make_pair(key, LValue(val.GetInt64())));
else if(val.IsString())
m.insert(make_pair(key, LValue(val.GetString())));
}
return m;
}
过程很简单,返回值的map<string,LValue>中的LValue的值需要判断其数据类型然后进行获取
if (it->second.getType()==LValue::Type::DOUBLE) {
double value = it->second.asDouble();
}
else if (it->second.getType()==LValue::Type::INTEGER) {
int value = it->second.asInt();
}
.
.
.
还有float、string、int64、bool、int64就不一一细写了
转载请注明出处,from 博客园 HemJohn
c++ json字符串转换成map管理的更多相关文章
- 使用fastjson的parseObject方法将json字符串转换成Map 或者List
fastjson 转换成map HashMap<String,String> map = JSON.parseObject(jsonStr,new TypeReference<Has ...
- json数组和json字符串转换成map解析
package demo; import java.util.List;import java.util.Map;import java.util.Map.Entry; import net.sf.j ...
- parseObject方法将json字符串转换成Map
String nwVal=recordDO.getWorkOrderNwVal(); HashMap<String,WxhcWorkOrderDO> nwMap=JSON.parseObj ...
- json格式转换成Map的应用
jsp 1.引用json.js(将json格式转换成字符串) 2. var name = document.getElementById("name").value; var re ...
- 使用jackson来进行数组格式的json字符串转换成List。
有一个字符串如下.如下,也是通过jackson把list转换成的json字符串,我想把它转过来,看网上的内容都不尽人如意,都是片断的内容.估计只有写的知道怎么使用,所以就直接看了jackson的官网, ...
- 利用阿里巴巴封装的FastJSON来解析json并转换成map
利用阿里巴巴封装的FastJSON来解析json并转换成map package com.zkn.newlearn.json; import com.alibaba.fastjson.JSON; i ...
- C#中服务端接受前端JSON字符串转换成字典集合
我们是否可以把从前端接受的JSON字符串转换成字典集合呢? 比如从前端接收:{'size':'10', 'weight':'10kg'} 在服务端转换成:[{size:"10"}, ...
- json字符串转成 Map/List
package jsonToMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; import n ...
- json 字符串转换成对象,对象转换成json字符串
json 字符串转换成对象,对象转换成json字符串 前端: 方法一: parseJSON方法: [注意jquery版本问题] var str = '{"name":&qu ...
随机推荐
- 非常实用的Sublime插件集合 – sublime推荐必备插件
插件介绍 ***PackageControl*** 功能:安装包管理 简介:sublime插件控制台,提供添加.删除.禁用.查找插件等功能 使用方法: 1.安装好控制台,如有不能正常调用 Packag ...
- 关于Django查询知识点总结
========关于Django查询知识点总结======= models.Book.objects.filter(**kwargs): querySet [obj1,obj2] models.Boo ...
- Educational Codeforces Round 65 (Rated for Div. 2) D. Bicolored RBS
链接:https://codeforces.com/contest/1167/problem/D 题意: A string is called bracket sequence if it does ...
- Java EE学习笔记(十)
MyBatis与Spring的整合 1.整合环境搭建 1).要实现MyBatis与Spring的整合,很明显需要这两个框架的JAR包,但是只使用这两个框架中所提供的JAR包是不够的,还需要其他的JAR ...
- 通过jcrop和canvas的画布功能完成对图片的截图功能与视频的截图功能实现
最近因为工作需要,做了视频截图和图截图的功能.大概需求是,用户点击某个按钮,可以对图片区域进行部分截取,然后进行进一步的业务操作. 首先说图片截图功能的思路, (1)下载Jcrop插件,添加css和j ...
- oracle中CAST函数使用简介【转】
CAST()函数可以进行数据类型的转换. CAST()函数的参数有两部分,源值和目标数据类型,中间用AS关键字分隔. 以下例子均通过本人测试. 一.转换列或值 语法:cast( 列名/值 as 数据类 ...
- Net Core下通过Proxy 模式
Net Core下通过Proxy 模式 NET Core下的WCF客户端也是开源的,这次发布.NET Core 2.0,同时也发布了 WCF for .NET Core 2.0.0, 本文介绍在.NE ...
- HDU 2243 考研路茫茫——单词情结 求长度小于等于L的通路总数的方法
http://acm.hdu.edu.cn/showproblem.php?pid=2243 这是一题AC自动机 + 矩阵快速幂的题目, 首先知道总答案应该是26^1 + 26^2 + 26^3 .. ...
- python之三级菜单
python之三级菜单 要求: 1. 运行程序输出第一级菜单 2. 选择一级菜单某项,输出二级菜单,同理输出三级菜单 3. 菜单数据保存在文件中 4. 让用户选择是否要退出 5. 有返回上一级菜单的功 ...
- NPOI导出EXCEL后公式无结果,公式重新计算开关
但其实这个选项是可以控制的.在NPOI中,这个属性叫做XSSFSheet.ForceFormulaRecalculation. 打开该选项的话,代码为 sheet1.ForceFormulaRecal ...