您的位置:首页 > 移动开发 > Unity3D

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

2017-12-23 10:25 381 查看
嵌套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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: