嵌套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);