解析对多个对象的Json响应C#unity
我正在尝试构建多人游戏,其中Java是我的服务器,Unity是我的客户端。 我能够将数据发送到服务器并在服务器(Java服务器)中读取Json格式的数据,但当我尝试读取响应时,我会遇到问题。我无法将Json响应正确映射到Unity中创建的类 请在下面找到解析对多个对象的Json响应C#unity,c#,json,unity3d,C#,Json,Unity3d,我正在尝试构建多人游戏,其中Java是我的服务器,Unity是我的客户端。 我能够将数据发送到服务器并在服务器(Java服务器)中读取Json格式的数据,但当我尝试读取响应时,我会遇到问题。我无法将Json响应正确映射到Unity中创建的类 请在下面找到 public class Player { public string playerID; public string name; public string playerPosX; public string
public class Player
{
public string playerID;
public string name;
public string playerPosX;
public string playerPosY;
public string playerPosZ;
}
public class Lobby
{
public string lobbyID;
public ArrayList player;
}
lobby = JsonUtility.FromJson<Lobby>(response);
Debug.Log(lobby.lobbyID);
Debug.Log(lobby.player.Count);
我得到以下错误。
第二日志
对象引用未设置为对象的实例不确定是否已锁定使用Unity Json实用程序,但我已成功使用nuget库使用Json字符串:
using Newtonsoft.Json;
namespace ConsoleApp2
{
class Program
{
static void Main(string[] args)
{
string json = "{\"player\":[{\"playerID\":\"P1\",\"name\":\"\",\"playerPosX\":\"\",\"playerPosY\":\"\",\"playerPosZ\":\"\",\"myne\":false}],\"lobbyID\":\"L1\"}";
Lobby lobby = JsonConvert.DeserializeObject<Lobby>(json);
System.Diagnostics.Debug.WriteLine(lobby.lobbyID);
System.Diagnostics.Debug.WriteLine(lobby.player.Length);
}
}
public class Lobby
{
public Player[] player { get; set; }
public string lobbyID { get; set; }
}
public class Player
{
public string playerID { get; set; }
public string name { get; set; }
public string playerPosX { get; set; }
public string playerPosY { get; set; }
public string playerPosZ { get; set; }
public bool myne { get; set; }
}
}
这就是我猜想您正在寻找的内容。此结构应该可以工作,反序列化为键入lobble:
public class Player
{
public string playerID;
public string name;
public string playerPosX;
public string playerPosY;
public string playerPosZ;
public bool myne;
}
public class Lobby
{
public List<Player> player;
public string lobbyID;
}
公共类播放器
{
公共字符串播放器ID;
公共字符串名称;
公共字符串播放器;
公共弦乐演奏会;
公共字符串播放器;
公共图书馆;
}
公共课大厅
{
公开名单玩家;
公共字符串说客ID;
}
如果我使用get并将其设置为不起作用,即使大厅ID为空,我也可以看出您使用的是Newtonsoft.Json,但我使用的是UnityEngine.jsonUtility,谢谢您的帮助!添加了这些新库,它开始工作。Unity中的默认Json parcer未按预期工作。可能是我的Json api未工作需要更改,我猜是Newtonsoft。Json是更好的库,更快,更不严格,经过良好测试,并且受Microsoft支持。然后只需使用JsonConvert类。
L1
1
public class Player
{
public string playerID;
public string name;
public string playerPosX;
public string playerPosY;
public string playerPosZ;
public bool myne;
}
public class Lobby
{
public List<Player> player;
public string lobbyID;
}