UnityC#解析嵌套json数据,json数组解析

嵌套1:带有数组的解析:


using Newtonsoft.Json;
using Newtonsoft.Json.Linq;


public class passportLoginData_serverInfo{
    public string subgane = "";
    public string serverName = "";//name
    public string hotDegree = "";
    public string roleInfoURL = "";
    public string state = "";
    public string serverIndex = "";
    public string onlineCount = "";//
    public string ip = "";
}
public class passportLoginData_areaInfo{

    public int serverCount = 1;//subgameCount
    public int areaIndex = 1;
    public string areaName = "";

}
public class passportLoginData_Channel{
    public string notice = "";
    public int areaCount = 0;//regionCount
    public string game = "";
    public string channel = "";
    public string passport = "";
    public string password = "";
    public string token = "";
    public string uid = "";
    public string needActive = "";
    public string lastLoginSubgame = "";
    public string channelVipLevel = "";//qq_vip
}


public static void parseJsonArray_passportLogin(){
        string jsonText = @"{
    ""code"": 0,
    ""message"": ""操作成功"",
    ""data"": {
        ""notice"": """",
        ""regionCount"": 1,
        ""regions"": [
            {
                ""number"": 1,
                ""name"": ""xxx1区"",
                ""subgameCount"": 2,
                ""subgames"": [
                    {
                        ""subgame"": 1001,
                        ""name"": ""xxx1区"",
                        ""hotDegree"": ""0"",
                        ""roleInfoURL"": ""http://10.0.0.38:10065/api/roleInfo.jhtml"",
                        ""state"": ""维护"",
                        ""entranceCount"": 1,
                        ""onlineCount"": ""-1"",
                        ""ip"": ""10.0.0.32:5089""
                    },{
                        ""subgame"": 1002,
                        ""name"": ""xxx21区"",
                        ""hotDegree"": ""20"",
                        ""roleInfoURL"": ""http://10.10.02.38:10065/api/roleInfo.jhtml"",
                        ""state"": ""12维护"",
                        ""entranceCount"": 11,
                        ""onlineCount"": ""-12"",
                        ""ip"": ""10.0.0.3:5089""
                    }
                ]
            }
        ],
        ""game"": ""mmkr"",
        ""channel"": ""AGS130R"",
        ""passport"": ""8382dbaass992c53e76"",
        ""password"": """",
        ""token"": ""af67dedddd216c0b7"",
        ""nickname"": """",
        ""uid"": ""98887af0sdea8f81f6b5d"",
        ""needActive"": ""false"",
        ""isNew"": ""1"",
        ""lastLoginSubgame"": ""000000"",
        ""qq_vip"": ""0"",
        ""mail"": """"
    }
}";  


        JObject msgData = (JObject)JsonConvert.DeserializeObject(jsonText); 
        string key = "code";
        if(msgData.Property (key)==null ){
            Debug.Log ("parseJsonArray_passportLogin(),keyNotExist,key=="+key); 
            return;
        }
        string code = msgData [key].ToString ();
        Debug.Log ("parseJsonArray_passportLogin(),code=="+code); 
        key = "message";
        if(msgData.Property (key)==null ){
            Debug.Log ("parseJsonArray_passportLogin(),keyNotExist,key=="+key); 
            return;
        }
        string message = msgData [key].ToString ();
        Debug.Log ("parseJsonArray_passportLogin(),message=="+message); 

        passportLoginData passportData = new passportLoginData ();
        passportData.code = code;
        passportData.message = message;

        passportLoginData_Channel loginInfo = new passportLoginData_Channel ();


        string key2 = "";
        key = "data";
        key2 = "notice";
        if(msgData.Property (key)==null ){
            Debug.Log ("parseJsonArray_passportLogin(),keyNotExist,key=="+key); 
            return;
        }
        if(msgData [key] [key2]==null ){
            Debug.Log ("parseJsonArray_passportLogin(),keyNotExist,key=="+key+",key2=="+key2); 
            return;
        }
        string notice = msgData [key] [key2].ToString ();
        loginInfo.notice = notice;
        Debug.Log ("parseJsonArray_passportLogin(),notice=="+notice); 
        key2 = "regionCount";
        if(msgData [key] [key2]==null ){
            Debug.Log ("parseJsonArray_passportLogin(),keyNotExist,key=="+key+",key2=="+key2); 
            return;
        }
        string regionCount = msgData [key] [key2].ToString ();
        int.TryParse(regionCount,out loginInfo.areaCount) ;
        Debug.Log ("parseJsonArray_passportLogin(),regionCount=="+regionCount); 
        key2 = "game";
        if(msgData [key] [key2]==null ){
            Debug.Log ("parseJsonArray_passportLogin(),keyNotExist,key=="+key+",key2=="+key2); 
            return;
        }
        string game = msgData [key] [key2].ToString ();
        loginInfo.game = game;
        Debug.Log ("parseJsonArray_passportLogin(),loginInfo.game=="+loginInfo.game);
        key2 = "channel";
        if(msgData [key] [key2]==null ){
            Debug.Log ("parseJsonArray_passportLogin(),keyNotExist,key=="+key+",key2=="+key2); 
            return;
        }
        string channel = msgData [key] [key2].ToString ();
        loginInfo.channel = channel;
        Debug.Log ("parseJsonArray_passportLogin(),loginInfo.channel=="+loginInfo.channel);
        key2 = "passport";
        if(msgData [key] [key2]==null ){
            Debug.Log ("parseJsonArray_passportLogin(),keyNotExist,key=="+key+",key2=="+key2); 
            return;
        }
        string passport = msgData [key] [key2].ToString ();
        loginInfo.passport = passport;
        Debug.Log ("parseJsonArray_passportLogin(),loginInfo.passport=="+loginInfo.passport);
        key2 = "token";
        if(msgData [key] [key2]==null ){
            Debug.Log ("parseJsonArray_passportLogin(),keyNotExist,key=="+key+",key2=="+key2); 
            return;
        }
        string token = msgData [key] [key2].ToString ();
        loginInfo.token = token;
        Debug.Log ("parseJsonArray_passportLogin(),loginInfo.token=="+loginInfo.token);
        key2 = "password";
        if(msgData [key] [key2]==null ){
            Debug.Log ("parseJsonArray_passportLogin(),keyNotExist,key=="+key+",key2=="+key2); 
            return;
        }
        string password = msgData [key] [key2].ToString ();
        loginInfo.password = password;
        Debug.Log ("parseJsonArray_passportLogin(),loginInfo.password=="+loginInfo.password);
        key2 = "uid";
        if(msgData [key] [key2]==null ){
            Debug.Log ("parseJsonArray_passportLogin(),keyNotExist,key=="+key+",key2=="+key2); 
            return;
        }
        string uid = msgData [key] [key2].ToString ();
        loginInfo.uid = uid;
        Debug.Log ("parseJsonArray_passportLogin(),loginInfo.uid=="+loginInfo.uid);
        key2 = "needActive";
        if(msgData [key] [key2]==null ){
            Debug.Log ("parseJsonArray_passportLogin(),keyNotExist,key=="+key+",key2=="+key2); 
            return;
        }
        string needActive = msgData [key] [key2].ToString ();
        loginInfo.needActive = needActive;
        Debug.Log ("parseJsonArray_passportLogin(),loginInfo.needActive=="+loginInfo.needActive);
        key2 = "lastLoginSubgame";
        if(msgData [key] [key2]==null ){
            Debug.Log ("parseJsonArray_passportLogin(),keyNotExist,key=="+key+",key2=="+key2); 
            return;
        }
        string lastLoginSubgame = msgData [key] [key2].ToString ();
        loginInfo.lastLoginSubgame = lastLoginSubgame;
        Debug.Log ("parseJsonArray_passportLogin(),loginInfo.lastLoginSubgame=="+loginInfo.lastLoginSubgame);


        key2 = "regions";
        if(msgData [key] [key2]==null ){
            Debug.Log ("parseJsonArray_passportLogin(),keyNotExist,key=="+key+",key2=="+key2); 
            return;
        }
        string key3 = "";

        int realAreaCount = 0;
        foreach (JToken tok in msgData [key] [key2])//遍历数组
        {
            realAreaCount++;
        }

        passportLoginData_areaInfo[] areaArray = new passportLoginData_areaInfo[loginInfo.areaCount];

        for(int i = 0;i<loginInfo.areaCount;i++){//多个区
            //JToken regionData= msgData[key][key2][i];

            if(i>=realAreaCount){
                Debug.Log ("parseJsonArray_passportLogin(),keyNotExist,key=="+key+",key2=="+key2+",i=="+i+",error:realAreaCount=="+realAreaCount); 
                continue;
            }


            areaArray[i] = new passportLoginData_areaInfo();
            if(msgData [key] [key2][i]==null ){
                Debug.Log ("parseJsonArray_passportLogin(),keyNotExist,key=="+key+",key2=="+key2+",i=="+i); 
                continue;
            }

            string regionsJsonStr = msgData[key][key2][i].ToString();
            JObject regionData = (JObject)JsonConvert.DeserializeObject(regionsJsonStr); 
            key3 = "number";
            if(regionData.Property (key3) == null){
                Debug.Log ("parseJsonArray_passportLogin(),keyNotExist,key=="+key+",key2=="+key2+",i=="+i+",key3=="+key3);
                continue;
            }
            areaArray [i].areaIndex = (int)regionData [key3];
            Debug.Log ("parseJsonArray_passportLogin(),areaI=="+i+",areaArray [i].areaIndex=="+areaArray [i].areaIndex);
            key3 = "name";
            if(regionData.Property (key3) == null){
                Debug.Log ("parseJsonArray_passportLogin(),keyNotExist,key=="+key+",key2=="+key2+",i=="+i+",key3=="+key3);
                continue;
            }
            areaArray [i].areaName = regionData [key3].ToString ();
            Debug.Log ("parseJsonArray_passportLogin(),areaI=="+i+",areaArray [i].areaName=="+areaArray [i].areaName);

            key3 = "subgameCount";
            if(regionData.Property (key3) == null){
                Debug.Log ("parseJsonArray_passportLogin(),keyNotExist,key=="+key+",key2=="+key2+",i=="+i+",key3=="+key3);
                continue;
            }
            string subgameCount = regionData [key3].ToString ();
            int.TryParse (subgameCount,out areaArray [i].serverCount);
            Debug.Log ("parseJsonArray_passportLogin(),areaI=="+i+",areaArray [i].serverCount=="+areaArray [i].serverCount);
            key3 = "subgames";
            if(regionData.Property (key3) == null){
                Debug.Log ("parseJsonArray_passportLogin(),keyNotExist,key=="+key+",key2=="+key2+",i=="+i+",key3=="+key3);
                continue;
            }

            int realServerCount = 0;
            foreach (JToken baseJ in regionData[key3])//遍历数组
            {
                realServerCount++;
            }
            Debug.Log ("parseJsonArray_passportLogin(),areaI=="+i+",realServerCount=="+realServerCount);

            passportLoginData_serverInfo[] serverArray = new passportLoginData_serverInfo[areaArray [i].serverCount];
            for(int j=0;j<areaArray[i].serverCount;j++){
 
                Debug.Log ("parseJsonArray_passportLogin(),11111,key=="+key+",key2=="+key2+",i=="+i+",key3=="+key3+",j=="+j); 
                serverArray [j] = new passportLoginData_serverInfo ();

                Debug.Log ("parseJsonArray_passportLogin(),22222,key=="+key+",key2=="+key2+",i=="+i+",key3=="+key3+",j=="+j); 

                if(j >= realServerCount){
                    Debug.Log ("parseJsonArray_passportLogin(),keyNotExist,key=="+key+",key2=="+key2+",i=="+i+",key3=="+key3+",j=="+j+",error:realServerCount=="+realServerCount); 
                    continue;
                }


                if(regionData[key3][j]==null ){
                    Debug.Log ("parseJsonArray_passportLogin(),keyNotExist,key=="+key+",key2=="+key2+",i=="+i+",key3=="+key3+",j=="+j); 
                    continue;
                }
                Debug.Log ("parseJsonArray_passportLogin(),33333,key=="+key+",key2=="+key2+",i=="+i+",key3=="+key3+",j=="+j); 
                string serverJsonStr = regionData[key3][j].ToString();
                Debug.Log ("parseJsonArray_passportLogin(),areaI=="+i+",serverJ=="+j+",serverJsonStr=="+serverJsonStr);

                JObject serverData = (JObject)JsonConvert.DeserializeObject(serverJsonStr);
                string key4 = "subgame";
                if(serverData.Property (key4) == null){
                    Debug.Log ("parseJsonArray_passportLogin(),keyNotExist,key=="+key+",key2=="+key2+",i=="+i+",key3=="+key3+",key4=="+key4);
                    continue;
                }
                serverArray[j].subgane = serverData[key4].ToString();
                Debug.Log ("parseJsonArray_passportLogin(),serverJ=="+j+",serverArray[j].subgane=="+serverArray[j].subgane);
                key4 = "name";
                if(serverData.Property (key4) == null){
                    Debug.Log ("parseJsonArray_passportLogin(),keyNotExist,key=="+key+",key2=="+key2+",i=="+i+",key3=="+key3+",key4=="+key4);
                    continue;
                }
                serverArray[j].serverName = serverData[key4].ToString();
                Debug.Log ("parseJsonArray_passportLogin(),serverJ=="+j+",serverArray[j].serverName=="+serverArray[j].serverName);

                key4 = "hotDegree";
                if(serverData.Property (key4) == null){
                    Debug.Log ("parseJsonArray_passportLogin(),keyNotExist,key=="+key+",key2=="+key2+",i=="+i+",key3=="+key3+",key4=="+key4);
                    continue;
                }
                serverArray[j].hotDegree = serverData[key4].ToString();
                Debug.Log ("parseJsonArray_passportLogin(),serverJ=="+j+",serverArray[j].hotDegree=="+serverArray[j].hotDegree);

                key4 = "state";
                if(serverData.Property (key4) == null){
                    Debug.Log ("parseJsonArray_passportLogin(),keyNotExist,key=="+key+",key2=="+key2+",i=="+i+",key3=="+key3+",key4=="+key4);
                    continue;
                }
                serverArray[j].state = serverData[key4].ToString();
                Debug.Log ("parseJsonArray_passportLogin(),serverJ=="+j+",serverArray[j].state=="+serverArray[j].state);

                key4 = "ip";
                if(serverData.Property (key4) == null){
                    Debug.Log ("parseJsonArray_passportLogin(),keyNotExist,key=="+key+",key2=="+key2+",i=="+i+",key3=="+key3+",key4=="+key4);
                    continue;
                }
                serverArray[j].ip = serverData[key4].ToString();
                Debug.Log ("parseJsonArray_passportLogin(),serverJ=="+j+",serverArray[j].ip=="+serverArray[j].ip);

                key4 = "entranceCount";
                if(serverData.Property (key4) == null){
                    Debug.Log ("parseJsonArray_passportLogin(),keyNotExist,key=="+key+",key2=="+key2+",i=="+i+",key3=="+key3+",key4=="+key4);
                    continue;
                }
                serverArray[j].serverIndex = serverData[key4].ToString();
                Debug.Log ("parseJsonArray_passportLogin(),serverJ=="+j+",serverArray[j].serverIndex=="+serverArray[j].serverIndex);

            }
        }
    }




嵌套2:不含数组

{

    "500": {
        "payChannel": "google",
        "updateurl": "10.0.0.38",
        "passporturl": "passport.xxx.com",
        "loginInterface": "/xxx/sdk/login",
        "chargeinfo": {
            "7777": "xr300krwzs",
            "777": "xm500krwzs",
            "888": "xmr.kr.11000krwzs",
            "555": "xmr.kr.33000krwzs",
            "999": "xs",
            "456": "",
            "345": "xmr.kr.33000krwcz",
            "chargeInterface": "/google/pay"
        }
    },
    "describe": "the first Key is AppId code"

}


代码:

string key = "500";

        JObject msgData = (JObject)JsonConvert.DeserializeObject(jsonStr);
        LogView.setViewText ("GameGlobal.cs,setChannelInfo(),msgData.Count=="+msgData.Count);
        string channelStr = msgData.Property (key)!=null ? msgData[key].ToString() : "error_noKey";
        //LogView.setViewText ("GameGlobal.cs,setChannelInfo(),channelStr=="+channelStr);
        if(channelStr=="error_noKey"){
            LogView.setViewText ("GameGlobal.cs,setChannelInfo(),error:channelStr==error_noKey");
            return;
        }

        JObject itemData = (JObject)JsonConvert.DeserializeObject(channelStr);

        key = "payChannel";
        string payChannel = itemData.Property (key)!=null ? itemData[key].ToString() : "error_noKey";
        key = "updateurl";
        string updateurl = itemData.Property (key)!=null ? itemData[key].ToString() : "error_noKey";
        key = "passporturl";
        string passporturl = itemData.Property (key)!=null ? itemData[key].ToString() : "error_noKey";
        key = "loginInterface";
        string loginInterface = itemData.Property (key)!=null ? itemData[key].ToString() : "error_noKey";
        key = "chargeinfo";
        string chargeInfoJsonStr = itemData.Property (key)!=null ? itemData[key].ToString() : "error_noKey";
        JObject chargeData = (JObject)JsonConvert.DeserializeObject(chargeInfoJsonStr);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值