'2013/12/04'에 해당되는 글 2건
- 2013.12.04 유니티 해상도 대응하기
- 2013.12.04 cocos2d-x JSON 파일을 다루기 (JSONCpp 사용) (1)
Android
Screen.SetResolution(int width, int heignt, bool bFullScreen) |
800×480 해상도 일 경우, SetResolution(800, 480, true)
'잡다한것들전부 > 팁' 카테고리의 다른 글
| [펌] 유니티 러너 게임 질문 (0) | 2013.12.06 |
|---|---|
| [펌] 유니티 메모리 관리 (0) | 2013.12.05 |
| 유니티 게임 매니저 관련 글 (0) | 2013.12.05 |
| 유니티 가로 세로 모드 설정 (0) | 2013.12.05 |
| 유니티 해상도 대응하기 (0) | 2013.12.04 |
| 까페에서 공부하는 느낌이 나는 분위기를 조성하는 사이트 (0) | 2013.11.28 |
Json 이란?
JSON(제이슨, JavaScript Object Notation)은, 인터넷에서 자료를 주고받을 때 그 자료를 표현하는 방법이다. 자료의 종류에 큰 제한은 없으며, 특히 컴퓨터 프로그램의 변수값을 표현하는 데 적합하다.
그 형식은 자바스크립트의 구문 형식을 따르지만, 프로그래밍 언어나 플랫폼에 독립적이므로 C, C++, C#, 자바, 자바스크립트, 펄, 파이썬 등 많은 언어에서 이용할 수 있다.
json 모듈에는
jsoncpp, jsonBox, rapidjson 등이 있습니다.
안정성은 jsoncpp 속도는 rapidjson 을 선호하는 것 같습니다.
그중에 안전성이 있는 jsoncpp에 대해 알아보겠습니다.
jsoncpp홈페이지에서 파일을 다운받습니다.
http://jsoncpp.sourceforge.net/
첨부파일의 include\json안에 있는 h 파일과
src\lib_json 안에 있는 모든 파일들을 cocos2d-x Class안에 집어넣습니다.
테스트로 읽을 json 파일입니다.
자신의 프로젝트 Resources에 json폴더를 만들고 그 안에 넣어줍니다.
소스입니다.
-> ReadJson버튼 클릭시 readJSON 호출
-> WriteJson버튼 클릭시 writeJSON 호출합니다.
읽을때
void HelloWorld::readJSON( CCObject *pSender )
{
//json 파일 읽기
//readUserInven("json/test_data.json");
std::string fileName = CCFileUtils::sharedFileUtils()->fullPathForFilename("json/test_data.json");
unsigned long bufferSize = 0;
unsigned char* json = CCFileUtils::sharedFileUtils()->getFileData(fileName.c_str(), "rb", &bufferSize );
std::string clearData((const char*)json,bufferSize); //파일 사이즈만큼 읽어옵니다.
/*
//파일 끝에 널을 붙여줌
unsigned long tmpSize = 0;
unsigned char *fileContent = cocos2d::CCFileUtils::sharedFileUtils()->getFileData( "test.txt", "r", &tmpSize );
cocos2d::CCString *ccStr = cocos2d::CCString::createWithData( fileContent, tmpSize );
cocos2d::CCLog( "str: %s", ccStr->getCString() );
*/
//읽기
readUserInven(clearData);
}
//json 파일 읽기
void HelloWorld::readUserInven( std::string pData )
{
/*
읽을 형식
{ "hello" : "world", "t" : true , "f" : false, "n": null, "i":123, "pi": 3.1416, "a":[1, 2, 3, 4] }
*/
Json::Value root;
Json::Reader reader;
bool parsingSuccessful = reader.parse(pData, root);
if (! parsingSuccessful)
{
CCLog("parser failed : \n %s", pData.c_str());
return ;
}
CCLog("JSON ReadTest");
std::string value1 = root.get("hello", "defaultvalue").asString();
CCLog("value1 %s", value1.c_str());
bool value2 = root.get("t", "default").asBool();
CCLog("value2 %s", value2?"true":"false");
bool value3 = root.get("f", "default").asBool();
CCLog("value3 %s", value3?"true":"false");
bool value4 = root.get("n", "default").isNull();
CCLog("value4 %s", value4?"null":"?");
int value5 = root.get("i", "default").asInt();
CCLog("value5 %d", value5);
double value6 = root.get("pi", "default").asDouble();
CCLog("value6 %g", value6);
{
//array
const Json::Value array = root["a"];
for (unsigned int i = 0; i < array.size(); ++i)
{
int item = array[i].asInt();
CCLog("%d, ", item);
}
}
}
파일을 쓸때
void HelloWorld::writeJSON( CCObject *pSender )
{
//쓰기
saveUserInven();
}
//JSON 데이터 생성
void HelloWorld::saveUserInven()
{
// 위와 같은 json 문서 만들기
Json::Value root;
root["Name"] = "Hong Gildong";
root["Age"] = 26;
Json::Value friends;//배열
friends.append("Im Kkeokjung");
friends.append("Elisabeth");
root["Friend"] = friends;
root["Sex"] = "male";
Json::StyledWriter writer;
std::string strJSON = writer.write(root);
CCLog("JSON WriteTest : %s" , strJSON.c_str());
writeFileData( "testJSON.json", strJSON.c_str() );
}
//파일 쓰기
void HelloWorld::writeFileData( std::string pszFileName, const char* pData )
{
/*
{
"Age" : 26,
"Friend" : [ "Im Kkeokjung", "Elisabeth" ],
"Name" : "Hong Gildong",
"Sex" : "male"
}
*/
FILE *fp = fopen(pszFileName.c_str(), "wb");
if (! fp)
{
CCLog("can not create file %s", pszFileName.c_str());
return;
}
else
{
CCLog("write file success: %s",pszFileName.c_str());
}
fputs(pData, fp); //pdata->fp에 복사
fclose(fp);
}
'잡다한것들전부 > 심화' 카테고리의 다른 글
| cocos2d-x JSON 파일을 다루기 (JSONCpp 사용) (1) | 2013.12.04 |
|---|
jsoncpp-src-0.5.0.tar.gz
test_data.json
jsonTest.zip




