C 遊戲開發中使用json

2021-05-24 04:29:38 字數 1371 閱讀 1288

最近想寫乙個自定義的動畫資料檔案,按照原來的做法,先定義乙個文字格式的資料檔案,然後寫乙個轉換器轉換成二進位制,然後遊戲中讀入並解析。不過我 最近特別懶,雖然我已經設計了乙個「萬能的」文字格式和二進位制轉換工具,但是解析二進位制檔案的工作仍然繁瑣,並且根據以往的經驗,可能會經常的修改檔案格 式,於是我想直接使用文字格式吧,首先想到的是xml,不過最近實在太懶了,連xml都懶得去解析,嗯,還有google protocol buffers這東西,以前看過,不過似乎用的人不多啊,還有乙個json,見人在遊戲中用過,那麼就試試他吧。。

找了幾個c++的json解析器,最後選中了jsoncpp (http://jsoncpp.sourceforge.net )。首先jsoncpp是public domain的,那麼就隨便我怎麼用了,太爽了,然後他使用的是標準c++,沒有任何其他依賴(某些庫還要依賴boost等東西),最後他很小巧,只有 15個原始檔,我直接把這些檔案copy到工程裡就編譯了,省去了lib的配置編譯連線設定等等(既然懶就懶到底了。。。),直接看文件,用法非常簡單, 我寫了乙個簡單的json檔案作為測試(其實是用jsoncpp的styled writer寫的。。)

view plain

copy to clipboard

print?

,  

"str test"  :  "hello json!"

}  

測試**:

view plain

copy to clipboard

print?

#include "json/json.h"

#include 

void  testjson()  

std::string name = root.get("str test" , "" ).asstring();  //測試讀入屬性值

std::coutroot["interger test" ] = 1;  

root["float test" ] = 1.0f;  

root["obj" ][ "a" ] =  "obja" ;  

root["obj" ][ "b" ] =  "objb" ;  

root["obj" ][ "c" ] = 0.13;  

json::styledwriter writer;  

std::string output = writer.write(root);  

std::coutstd::ofstream file("test.json" );  

file<}  

使用jsoncpp簡直太輕鬆了,我一句解析**都沒有寫,直接從檔案得到了json物件,有了json物件你就可以向你的遊戲資料物件寫入值了,或者作為早期的測試,直接使用json物件也未嘗不可

c 遊戲開發中使用json

最近想寫乙個自定義的動畫資料檔案,按照原來的做法,先定義乙個文字格式的資料檔案,然後寫乙個轉換器轉換成二進位制,然後遊戲中讀入並解析。不過我最近特別懶,雖然我已經設計了乙個 萬能的 文字格式和二進位制轉換工具,但是解析二進位制檔案的工作仍然繁瑣,並且根據以往的經驗,可能會經常的修改檔案格式,於是我想...

C語言專案中使用json

隨著物聯網的發展,越來越多的物需要連線網路上傳資料,伺服器同時需要對接多種型別的終端,協議的多樣性是加大伺服器端複雜度的乙個重要方面,同時也加大了維護複雜度,經過權衡終端最終採用了json資料格式。使用的理由 1 標準 主流的語言都是支援json,方便 終端和伺服器的解析 2 擴充套件性好 3 易於...

flex中使用json格式

要用到json,看了一篇 的掃盲貼,在flex中使用json十分方便。json是介於純文字方式與xml方式之間的一種格式,json能做到的事情,xml完成可以做到。為什麼要用json呢,我看大部分還是像我一樣,不得不用。json是ajax資料傳輸的首選,現有的專案使用的已經是json,如果增加fle...