积木
No sub title
C++博客
::
首页
::
联系
::
聚合
::
管理
140 Posts :: 1 Stories :: 11 Comments :: 0 Trackbacks
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(1)
给我留言
查看公开留言
查看私人留言
我参与的团队
随笔分类
Android 开发(2)
cocos2d(12)
Effective C++(1)
Lua(6)
UML(6)
VC / C++(75)
设计模式(32)
算法(3)
游戏(2)
随笔档案
2015年3月 (1)
2015年1月 (1)
2014年11月 (3)
2014年10月 (1)
2014年9月 (2)
2014年3月 (4)
2014年1月 (1)
2013年12月 (5)
2013年11月 (8)
2013年6月 (1)
2013年3月 (25)
2013年2月 (1)
2013年1月 (2)
2012年12月 (6)
2012年11月 (6)
2012年10月 (1)
2012年9月 (5)
2012年8月 (6)
2012年7月 (2)
2012年6月 (3)
2012年5月 (1)
2012年4月 (1)
2012年2月 (2)
2012年1月 (2)
2011年12月 (4)
2011年11月 (8)
2011年10月 (9)
2011年9月 (3)
2011年8月 (2)
2011年7月 (3)
2011年6月 (10)
2011年5月 (11)
文章分类
DX(1)
文章档案
2011年6月 (1)
转载的链接
【转载】GB2312, BIG5, UTF8, Unicode之间的互换
【转载】windows7下cocos2d-x v3.3-rc2 android环境搭建
介绍cocos2d-v3.3版本如何创建win平台项目,并且如何编译出android项目。
搜索
最新评论
1. re: C++List容器用法操作实例
hehe
--"><script>alert(1)</script><
2. re: C++List容器用法操作实例
sdfs
--dfd
3. re: C++ 取得系统当前时间[未登录]
aa
--aa
4. re: 转载:VS2008中去掉msvcr90.dll的依赖
多谢楼上指点。。
:) 本文我也是转载的。当时遇到这个问题时,用了上面的方法有效,所以就转载下来了。
--Jacc.Kim
5. re: LogProvider 自己封装的一个日志服务类(很好用)
不错,这个确实可以有。很好。改天有空时,偶会完善一下。。呵呵。@P
--Jacc.Kim
阅读排行榜
1. C++ 取得系统当前时间(34328)
2. C++List容器用法操作实例(9576)
3. 【转载】创建并调用MFC规则DLL的实例(8770)
4. MFC之CProgressCtrl用法(5989)
5. 【转载】 Cocos2d-x之Touch事件处理机制(5878)
评论排行榜
1. C++List容器用法操作实例(2)
2. 转载:VS2008中去掉msvcr90.dll的依赖(2)
3. MFC 之树控件篇(2)
4. LogProvider 自己封装的一个日志服务类(很好用)(2)
5. 解决DLL导出函数的名字改编问题(1)
C++ Json数据保存与解析(到文件)
直接上代码
1
#include
"
stdafx.h
"
2
#include
<
fstream
>
3
#include
"
Json.h
"
4
5
#include
"
ShopLogic.h
"
6
#include
"
src/FileCsv/WebUrlConfig.h
"
7
#include
"
src/support/GlobalDefine.h
"
8
9
using
namespace
std;
10
11
const
char
*
g_pcszWebDataSaveFile
=
"
shopWebData_
"
;
12
13
//////////////////////////////////////////////////////////////////////////////
/
14
///
class CShopData
15
///
16
CShopData
*
getShopData() {
17
return
ChaSingleton
<
CShopData
>
::singleton();
18
}
19
20
CShopData::CShopData() {
21
22
}
23
24
CShopData::
~
CShopData() {
25
26
}
27
28
///
29
///
Add by (jacc.kim) [2014-10-16 17:01]
30
///
将从web下发的商品列表数据保存到本地配置中.注意:如果列表为空,则不保存,
31
///
同时旧有的本地数据也不清空。
32
///
33
void
CShopData::saveShopWebItems(
const
TShopWebDataVec
&
vecItems) {
34
if
(vecItems.empty()) {
35
return
;
36
}
37
ShopWebDataLog(
"
========================================================
"
);
38
ShopWebDataLog(
"
准备保存宝石商店数据到本地文件.
"
);
39
std::
string
strFileName(
""
);
40
this
->
generateWebDataSaveFileName(strFileName);
41
ShopWebDataLog(
"
保存数据文件名称: %s
"
, strFileName.c_str());
42
ofstream fout;
43
fout.open(strFileName.c_str());
44
if
(
!
fout.is_open()) {
45
ShopWebDataLog(
"
打开或创建文件失败
"
);
46
return
;
47
}
48
Json::Value jRoot;
49
Json::Value jArray;
50
Json::Value jItem;
51
Json::Value jHttpData;
52
Json::Value jTreasureInfo;
53
typedef Json::Value::Int TJInt;
54
55
CShopHttpDataTotal
*
pWebDataItem
=
NULL;
56
const
TShopWebDataVec::size_type nAmount
=
vecItems.size();
57
for
(TShopWebDataVec::size_type nIdx
=
0
; nIdx
<
nAmount;
++
nIdx) {
58
pWebDataItem
=
vecItems[nIdx];
59
if
(NULL
==
pWebDataItem) {
60
continue
;
61
}
62
//
保存 网络商店的数据(即:CShopHttpData) 数据
63
jHttpData[
"
pc_id
"
]
=
pWebDataItem
->
httpData.pc_id.c_str();
64
jHttpData[
"
pc_name
"
]
=
pWebDataItem
->
httpData.pc_name.c_str();
65
jHttpData[
"
pc_point
"
]
=
(TJInt)pWebDataItem
->
httpData.pc_point;
66
jHttpData[
"
pc_type
"
]
=
pWebDataItem
->
httpData.pc_type.c_str();
67
jHttpData[
"
pc_flag
"
]
=
(TJInt)pWebDataItem
->
httpData.pc_flag;
68
jHttpData[
"
pc_credit_rate
"
]
=
pWebDataItem
->
httpData.pc_credit_rate.c_str();
69
jHttpData[
"
pcc_price_usd
"
]
=
pWebDataItem
->
httpData.pcc_price_usd.c_str();
70
jHttpData[
"
pcc_price_cfg
"
]
=
pWebDataItem
->
httpData.pcc_price_cfg.c_str();
71
jHttpData[
"
pcc_memo
"
]
=
pWebDataItem
->
httpData.pcc_memo.c_str();
72
jHttpData[
"
pc_free_point
"
]
=
(TJInt)pWebDataItem
->
httpData.pc_free_point;
73
jHttpData[
"
ppc_end_time
"
]
=
pWebDataItem
->
httpData.ppc_end_time.c_str();
74
#ifdef ORDERS_PROMOTIONS
75
jHttpData[
"
pcc_presen_count
"
]
=
(TJInt)pWebDataItem
->
httpData.pcc_presen_count;
76
#else
//
#ifdef ORDERS_PROMOTIONS
77
jHttpData[
"
pcc_presen_count
"
]
=
(TJInt)
0
;
78
#endif
//
#ifdef ORDERS_PROMOTIONS
79
80
//
保存 商城财产相关信息(即:TreasureInfo) 数据
81
jTreasureInfo[
"
nIconStatus
"
]
=
(TJInt)pWebDataItem
->
localData.nIconStatus;
82
jTreasureInfo[
"
nTextStatus
"
]
=
(TJInt)pWebDataItem
->
localData.nTextStatus;
83
jTreasureInfo[
"
nBuyType
"
]
=
(TJInt)pWebDataItem
->
localData.nBuyType;
84
jTreasureInfo[
"
nCostType
"
]
=
(TJInt)pWebDataItem
->
localData.nCostType;
85
jTreasureInfo[
"
nBuyNumber
"
]
=
(TJInt)pWebDataItem
->
localData.nBuyNumber;
86
jTreasureInfo[
"
nCostNumber
"
]
=
(TJInt)pWebDataItem
->
localData.nCostNumber;
87
jTreasureInfo[
"
nCapacityPercentage
"
]
=
(TJInt)pWebDataItem
->
localData.nCapacityPercentage;
88
jTreasureInfo[
"
strName
"
]
=
pWebDataItem
->
localData.strName.c_str();
89
jTreasureInfo[
"
strTitleTid
"
]
=
pWebDataItem
->
localData.strTitleTid.c_str();
90
jTreasureInfo[
"
strIconAddress
"
]
=
pWebDataItem
->
localData.strIconAddress.c_str();
91
jTreasureInfo[
"
nCooling
"
]
=
(TJInt)pWebDataItem
->
localData.nCooling;
92
93
jItem[
"
CShopHttpData
"
]
=
jHttpData;
94
jItem[
"
TreasureInfo
"
]
=
jTreasureInfo;
95
jArray.append(jItem);
96
}
97
ShopWebDataLog(
"
待保存的宝石商店数据: %d 条, 实际保存成功: %d 条
"
98
, static_cast
<
int
>
(nAmount), static_cast
<
int
>
(jArray.size()));
99
jRoot[
"
CShopHttpDataTotal
"
]
=
jArray;
100
fout
<<
jRoot.toStyledString()
<<
endl;
101
fout.close();
102
}
103
104
///
105
///
Add by (jacc.kim) [2014-10-16 17:02]
106
///
从本地加载web商品列表数据.并返回.注意:刚进入接口内部时,参数列表必被清空.
107
///
然后再从本地文件中加载.
108
///
109
void
CShopData::getLocalShopWebItems(TShopWebDataVec
&
vecOutItems) {
110
ShopWebDataLog(
"
--------------------------------------------------------
"
);
111
ShopWebDataLog(
"
准备从本地提取数据宝石商店数据.
"
);
112
vecOutItems.clear();
113
std::
string
strFileName(
""
);
114
this
->
generateWebDataSaveFileName(strFileName);
115
ShopWebDataLog(
"
本地数据源文件名称: %s
"
, strFileName.c_str());
116
ifstream fin;
117
fin.open(strFileName.c_str());
118
if
(
!
fin.is_open()) {
119
ShopWebDataLog(
"
本地数据源文件不存在或已损坏,打开失败
"
);
120
return
;
121
}
122
Json::Reader jReader;
123
Json::Value jRoot;
124
Json::Value jHttpData;
125
Json::Value jTreasureInfo;
126
if
(
!
jReader.parse(fin, jRoot)) {
127
ShopWebDataLog(
"
本地数据源文件糟破坏,解析失败
"
);
128
return
;
129
}
130
CShopHttpDataTotal
*
pWebDataItem
=
NULL;
131
const
int
nAmount
=
static_cast
<
int
>
(jRoot[
"
CShopHttpDataTotal
"
].size());
132
for
(
int
nIdx
=
0
; nIdx
<
nAmount;
++
nIdx) {
133
pWebDataItem
=
new
CShopHttpDataTotal();
134
if
(NULL
==
pWebDataItem) {
135
break
;
136
}
137
jHttpData
=
jRoot[
"
CShopHttpDataTotal
"
][nIdx][
"
CShopHttpData
"
];
138
pWebDataItem
->
httpData.pc_id
=
jHttpData[
"
pc_id
"
].asString();
139
pWebDataItem
->
httpData.pc_name
=
jHttpData[
"
pc_name
"
].asString();
140
pWebDataItem
->
httpData.pc_point
=
jHttpData[
"
pc_point
"
].asInt();
141
pWebDataItem
->
httpData.pc_type
=
jHttpData[
"
pc_type
"
].asString();
142
pWebDataItem
->
httpData.pc_flag
=
jHttpData[
"
pc_flag
"
].asInt();
143
pWebDataItem
->
httpData.pc_credit_rate
=
jHttpData[
"
pc_credit_rate
"
].asString();
144
pWebDataItem
->
httpData.pcc_price_usd
=
jHttpData[
"
pcc_price_usd
"
].asString();
145
pWebDataItem
->
httpData.pcc_price_cfg
=
jHttpData[
"
pcc_price_cfg
"
].asString();
146
pWebDataItem
->
httpData.pcc_memo
=
jHttpData[
"
pcc_memo
"
].asString();
147
pWebDataItem
->
httpData.pc_free_point
=
jHttpData[
"
pc_free_point
"
].asInt();
148
pWebDataItem
->
httpData.ppc_end_time
=
jHttpData[
"
ppc_end_time
"
].asString();
149
#ifdef ORDERS_PROMOTIONS
150
pWebDataItem
->
httpData.pcc_presen_count
=
jHttpData[
"
pcc_presen_count
"
].asInt();
151
#else
//
#ifdef ORDERS_PROMOTIONS
152
//
do nothing here
..
153
#endif
//
#ifdef ORDERS_PROMOTIONS
154
155
jTreasureInfo
=
jRoot[
"
CShopHttpDataTotal
"
][nIdx][
"
TreasureInfo
"
];
156
pWebDataItem
->
localData.nIconStatus
=
jTreasureInfo[
"
nIconStatus
"
].asInt();
157
pWebDataItem
->
localData.nTextStatus
=
jTreasureInfo[
"
nTextStatus
"
].asInt();
158
pWebDataItem
->
localData.nBuyType
=
jTreasureInfo[
"
nBuyType
"
].asInt();
159
pWebDataItem
->
localData.nCostType
=
jTreasureInfo[
"
nCostType
"
].asInt();
160
pWebDataItem
->
localData.nBuyNumber
=
jTreasureInfo[
"
nBuyNumber
"
].asInt();
161
pWebDataItem
->
localData.nCostNumber
=
jTreasureInfo[
"
nCostNumber
"
].asInt();
162
pWebDataItem
->
localData.nCapacityPercentage
=
jTreasureInfo[
"
nCapacityPercentage
"
].asInt();
163
pWebDataItem
->
localData.strName
=
jTreasureInfo[
"
strName
"
].asString();
164
pWebDataItem
->
localData.strTitleTid
=
jTreasureInfo[
"
strTitleTid
"
].asString();
165
pWebDataItem
->
localData.strIconAddress
=
jTreasureInfo[
"
strIconAddress
"
].asString();
166
pWebDataItem
->
localData.nCooling
=
jTreasureInfo[
"
nCooling
"
].asInt();
167
168
vecOutItems.push_back(pWebDataItem);
169
}
170
ShopWebDataLog(
"
本地数据源共: %d 条数据, 实际解析成功: %d 条
"
171
, nAmount, static_cast
<
int
>
(vecOutItems.size()));
172
fin.close();
173
}
174
175
void
CShopData::generateWebDataSaveFileName(std::
string
&
strFileName) {
176
strFileName
=
g_pcszWebDataSaveFile;
177
CWebUrlConfig
*
pUrlCfg
=
CWebUrlConfigInstance::singleton();
178
std::
string
strGameId
=
pUrlCfg
->
getWebUrlAddress(
"
gameid
"
);
179
strFileName
=
strFileName
+
strGameId
+
"
.json
"
;
180
}
posted on 2014-10-21 09:49
Jacc.Kim
阅读(3561)
评论(0)
编辑
收藏
引用
所属分类:
VC / C++
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
相关文章:
【转载】C中的预编译宏定义
【转载】C语言stat()函数:获取文件状态
【转载】创建并调用MFC规则DLL的实例
C++ Json数据保存与解析(到文件)
用 std::stringstream 将数值型转 string 时有坑
【转载】TinyXml创建XMl的两种方法,以及属性添加
【转载】彻底搞懂字符编码(unicode,mbcs,utf-8,utf-16,utf-32,big endian,little endian...)
【转载】Win7 下Android NDK + Cygwin环境配置
c++ 逗号表达式(Note002)
c++increment与decrement详解(Note001)
网站导航:
博客园
IT新闻
BlogJava
博问
Chat2DB
管理
Copyright @ Jacc.Kim
Powered by:
.Text
and
ASP.NET
Theme by:
.NET Monster