cocos2d-x技術群新群:117871561
c++技術交流群:593010226
在棋牌游戲開發中避免不了與sdk打交道,一般sdk都是用java寫的 所以 一些數據的交換避免不了。當lua代碼向java代碼傳的值很多時 為了方便 都會編碼成cjson或json轉換格式的數據 那java部分 就要去解析這個格式從而獲得想要的數據 下面 通過簡單易懂的代碼 去了解java代碼中如何去解析json或cjson格式數據
lua部分
local param = {}
param["count"] = 1
param["userid"] = 123
param["price"] = 20
--將table類型param編碼成cjson格式數據
lcoal args = { cjson.encode(param)}
--調用java部分方法的簽名
local sigs = "(ILjava/lang/String;)V"
--調用java部分的pay方法
local ok,ret = luaj.callStaticMethod("org/cocos2dx/lua/AppActivity","pay",args,sigs)
java部分
AppActivity.java
//引入包
import org.json.JSONException;
import org.json.JSONObject;
//payparam是lua代碼傳過來的json數據
public static void pay(final String payparam)
{
//創建一個JSONObject對象 這個對象實現的代碼塊一定要用try{}catch{}捕獲異常
try
{
JSONObject jsonObj = new JSONObject(payparam)
//根據json中的鍵count獲取int類型數量
int count = isonObj.getInt("count")
double fPrice = jObject.getDouble("price");
String userid = jObject.getString("userid");
}
catch(JSONException e)
{
e.printStackTrace();
}
}