測試解析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:測試資料請參閱上一篇所發

arrow
arrow

    狼翔月影 發表在 痞客邦 留言(0) 人氣()