解析对多个对象的Json响应C#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

我正在尝试构建多人游戏,其中Java是我的服务器,Unity是我的客户端。 我能够将数据发送到服务器并在服务器(Java服务器)中读取Json格式的数据,但当我尝试读取响应时,我会遇到问题。我无法将Json响应正确映射到Unity中创建的类

请在下面找到

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;
}