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 ...
随机推荐
- 洛谷P1831 杠杆数
P1831 杠杆数 题目描述 如果把一个数的某一位当成支点,且左边的数字到这个点的力矩和等于右边的数字到这个点的力矩和,那么这个数就可以被叫成杠杆数. 比如4139就是杠杆数,把3当成支点,我们有这样 ...
- Openjudge2729 Blah数集(单调队列)
2729:Blah数集 总时间限制: 3000ms 内存限制: 65536kB 描述 大数学家高斯小时候偶然间发现一种有趣的自然数集合Blah,对于以a为基的集合Ba定义如下:(1) a是集合Ba ...
- 【VueJS】windows环境安装vue-cli及webpack并创建VueJS项目
1. 安装node.js, Node.js安装包及源码下载地址为:https://nodejs.org/en/download/. 这次node.js不是主角,默认已安装好了,通过npm –v查看no ...
- excel 公式2列合并
=A2&"="&C2 ="UPDATE comm_department SET parent_id='"&D2&"' ...
- 搞定C系语言的的swap
http://www.cs.utsa.edu/~wagner/CS2213/swap/swap.html 原地址 Parameters, by value and by reference: Both ...
- Codeforces 126B(kmp)
要点 头尾的最长相同只要一个kmp即可得,于是处理中间部分 扫一遍记录一下前缀的每个位置是否存在一个中间串跟它相同,见代码 如果当前没有,接着用Next数组去一找即可 #include <cst ...
- 爬虫(BeautifulSoup4)——安装
环境:python3 win10 安装这个心好累啊!网上找了很多办法都安装不成功,后来换了几个安装包,最后4.4.1版本的包终于能用了! https://blog.csdn.net/www520507 ...
- jQuery banner切换插件
今天学写了一个基于jQuery焦点图切换插件,有不对的地方还请多多指教,不多说下面是代码: 1.引jQuery库 <script src="http://code.jquery.com ...
- 电脑Bois中usb模式启动热键
组装机主板 品牌笔记本 品牌台式机 主板品牌 启动按键 笔记本品牌 启动按键 台式机品牌 启动按键 华硕主板 F8 联想笔记本 F12 联想台式机 F12 技嘉主板 F12 宏基笔记本 F12 惠普台 ...
- Spring MVC 示例
Srping MVC项目结构如下: 一.首先创建一个Dynamic Web Project 二.WebContent/WEB-INF/文件夹下新增 web.xml,配置servlet 容器对于web. ...