json数据文本
{
"lsPlayerMessage": [
{
"PlayerId": 1,
"PlayerName": "Json",
"PlayerEquip": [
{
"EquipId": 101,
"EquipName": "Gun"
}
]
},
{
"PlayerId": 2,
"PlayerName": "Json",
"PlayerEquip": [
{
"EquipId": 102,
"EquipName": "Gun_1"
}
]
}
]
}
Unity中实现json数据遍历代码如下
void ReadJson()
{
// JsonPath()自己写的json文件所在的目录
if (!File.Exists(JsonPath()))
{
Debug.LogError("读取的文件不存在!");
return;
}
string json = File.ReadAllText(JsonPath());
JsonData jsonTemp = new JsonData();
jsonTemp = JsonUtility.FromJson<JsonData>(json);
Debug.Log("玩家数量:" + jsonTemp.lsPlayerMessage.Count);
for (int i = 0; i < jsonTemp.lsPlayerMessage.Count; i++)
{
Debug.Log(jsonTemp.lsPlayerMessage[i].PlayerId);
Debug.Log(jsonTemp.lsPlayerMessage[i].PlayerName);
for (int j = 0; j < jsonTemp.lsPlayerMessage[i].PlayerEquip.Count; j++)
{
Debug.Log(jsonTemp.lsPlayerMessage[i].PlayerEquip[j].EquipId);
Debug.Log(jsonTemp.lsPlayerMessage[i].PlayerEquip[j].EquipName);
}
}
}
}
public class JsonData
{
public List<PlayerMessage> lsPlayerMessage;
}
// 玩家信息
// 序列化
[Serializable]
public class PlayerMessage
{
public int PlayerId;
public string PlayerName;
public List<EquipMessage> PlayerEquip;
}
// 装备信息
// 序列化
[Serializable]
public class EquipMessage
{
public int EquipId;
public string EquipName;
}
现在举个例子给你,自己照着写出来看看(温馨提示....json这里取出来不是二维数组)答案(=c=我的答案)在最下面
{
"level" : [
{
"levelcontent": [
{
"name" : 1,
"content" : [
0,0,1,1,1,0,0,0,
0,0,1,3,1,0,0,0,
0,0,1,2,1,1,1,1,
1,1,1,4,2,4,3,1,
1,3,2,4,2,1,1,1,
1,1,1,1,4,1,0,0,
0,0,0,1,3,1,0,0,
0,0,0,1,1,1,0,0
],
"allRow" : 8,
"allCol" : 8,
"heroRow" : 4,
"heroCol" : 4,
"allBox" : 4
}
]
}
]
}
// Application.streamingAssetsPath
// 指向 X:/unity_file/项目文件名/Assets/StreamingAssets 这个文件夹
string mapFile = Application.streamingAssetsPath + "/levelConfig.json";
// print(mapFile);
if (!File.Exists(mapFile))
{
Debug.LogError("读取的文件不存在!");
return;
}
string json = File.ReadAllText(mapFile);
Debug.Log("json数据:" + json);
JsonData jsonTemp = new JsonData();
jsonTemp = JsonUtility.FromJson<JsonData>(json);
Debug.Log("关卡数量:" + jsonTemp.level.Count);
for (int i = 0; i < jsonTemp.level.Count; i++)
{
for (int j = 0; j < jsonTemp.level[i].levelcontent.Count; j++)
{
Debug.Log(jsonTemp.level[i].levelcontent[j].name);
Debug.Log(jsonTemp.level[i].levelcontent[j].content);
}
}
}
// 预制一个json数据类
[Serializable]
public class JsonData
{
public List<Level> level;
}
// 关卡
[Serializable]
public class Level
{
public List<Levelcontent> levelcontent;
}
// 关卡信息
[Serializable]
public class Levelcontent
{
public int[] content;
public int name, allRow, allCol, heroRow, heroCol, allBox;
}
如果比较迷糊 可以看看https://www.jianshu.com/p/b561719da1fe大佬的文字