測試解析php回傳的json資料,需使用 CJsonValue 或是 JSONObject
void TestPost() {
string url = "http://localhost/Projects/test.php";
WWWForm form= new WWWForm();
form.AddField("var1", "value1");
form.AddField("var2", "value2");
WWW www = new WWW(url, form);
StartCoroutine(WaitForRequest(www));
}
class Obj1 {
public int iData;
public bool bData;
public string sData;
public string name;
}
Dictionary<string, Obj1> Map1 = new Dictionary<string, Obj1>();
Dictionary<string, List<Obj1>> AMap = new Dictionary<string, List<Obj1>>();
IEnumerator WaitForRequest(WWW www) {
yield return www;
//check for errors
if (www.error == null) {
Debug.Log("WWW ok:" + www.data);
var jsonValue = new CJsonValue(www.data);
if (jsonValue.Get<bool>("result")) {
string msg = jsonValue.Get<string>("msg");
int iData = jsonValue.Get<int>("int");
float fData = jsonValue.Get<float>("float");
bool bData = jsonValue.Get<bool>("bool");
Debug.Log("msg:"+msg);
Debug.Log("iData:"+iData);
Debug.Log("fData:"+fData);
Debug.Log("bData:"+bData);
foreach (var item in jsonValue.Get("fruit") as IList) {
Debug.Log("item:"+item.ToString());
}
foreach (var item in jsonValue.Get("Dic") as IList) {
var getData = new CJsonValue(item);
Debug.Log("key:"+getData.Get<string>("key"));
Debug.Log("result2:"+getData.Get<string>("result2"));
Debug.Log("result3:"+getData.Get<string>("result3"));
Debug.Log("result4:"+getData.Get<string>("result4"));
}
JSONObject json = new JSONObject(www.data);
foreach (KeyValuePair<string, string> item in json.GetField("Dic1").ToDictionary()) {
Debug.Log("item key:"+item.Key);
Debug.Log("item value:"+item.Value);
}
int CiData = int.Parse(json.GetField("Class").GetField("iData").ToString());
Debug.Log("CiData:"+CiData);
bool CbData = bool.Parse(json.GetField("Class").GetField("bData").ToString());
Debug.Log("CbData:"+CbData);
string CsData = json.GetField("Class").GetField("sData").ToString();
Debug.Log("CsData:"+CsData);
string Cname = json.GetField("Class").GetField("name").ToString();
Debug.Log("Cname:"+Cname);
foreach(JSONObject item in json.GetField("class_array").list) {
int IiData = int.Parse(item.GetField("iData").ToString());
Debug.Log("IiData:"+IiData);
bool IbData = bool.Parse(item.GetField("bData").ToString());
Debug.Log("IbData:"+IbData);
string IsData = item.GetField("sData").ToString();
Debug.Log("IsData:"+IsData);
string Iname = item.GetField("name").ToString();
Debug.Log("Iname:"+Iname);
}
string keyName = "";
Map1.Clear();
for (int i=0; i< 10; i++) {
keyName = "key"+i;
if (json.GetField("Map1").GetField(keyName)) {
Obj1 getObj = new Obj1();
getObj.iData = int.Parse(json.GetField("Map1").GetField(keyName).GetField("iData").ToString());
getObj.bData = bool.Parse(json.GetField("Map1").GetField(keyName).GetField("bData").ToString());
getObj.sData = json.GetField("Map1").GetField(keyName).GetField("sData").ToString();
getObj.name = json.GetField("Map1").GetField(keyName).GetField("name").ToString();
Map1.Add(keyName, getObj);
}
}
foreach(KeyValuePair<string, Obj1> item in Map1) {
Debug.Log("key:"+item.Key);
Debug.Log("name:"+item.Value.name);
}
AMap.Clear();
int count = 0;
foreach(JSONObject item in json.GetField("AMap").list) {
Debug.Log("item:"+item.ToString());
List<Obj1> objList = new List<Obj1>();
if (item.GetField("key1")) {
Obj1 getObj = new Obj1();
getObj.iData = int.Parse(item.GetField("key1").GetField("iData").ToString());
getObj.bData = bool.Parse(item.GetField("key1").GetField("bData").ToString());
getObj.sData = item.GetField("key1").GetField("sData").ToString();
getObj.name = item.GetField("key1").GetField("name").ToString();
objList.Add(getObj);
}
if (item.GetField("key2")) {
Obj1 getObj = new Obj1();
getObj.iData = int.Parse(item.GetField("key2").GetField("iData").ToString());
getObj.bData = bool.Parse(item.GetField("key2").GetField("bData").ToString());
getObj.sData = item.GetField("key2").GetField("sData").ToString();
getObj.name = item.GetField("key2").GetField("name").ToString();
objList.Add(getObj);
}
AMap.Add(count.ToString(), objList);
count++;
}
foreach(KeyValuePair<string, List<Obj1>> item in AMap) {
Debug.Log("key:"+item.Key);
foreach(Obj1 data in item.Value) {
Debug.Log("data name:"+data.name);
}
}
}
} else {
Debug.Log("www Error:" + www.error);
}
}
ps:測試資料請參閱上一篇所發