C#反序列化对象

C# Deserialize Object

我的服务器上有一个网络套接字,该套接字 return 播放器信息列表到所有客户端。在我从 websocket 获取数据后,我无法反序列化我的数据,因为 c# 在我的数据中添加了一些“”字符。我无法删除这些字符

"\"[{\\"Id\\":\\"\\",\\"Location\\":{\\"X\\":60.0,\\"Y\\":60.0,\\"Z\\":10.0},\\"Rotation\\":{\\"X\\":10.0,\\"Y\\":10.0,\\"Z\\":10.0},\\"State\\":\\"walk\\",\\"IsAttacking\\":false,\\"PlayerName\\":\\"Sadooo\\",\\"Health\\":100,\\"LastSync\\":637598981481744771}]\""

我的 Json 字符串在调试模式下看起来像这样。我怎样才能清除这个字符串并反序列化。 我的项目 class 中有这个 属性 名称,一切正常我只需要去掉数据开头和结尾的 \ 字符和 " 字符。

  public class PlayerInfo
    {
        //public string IpAdress { get; set; }
        public string Id { get; set; }
        public MyVector Location { get; set; }
        public MyVector Rotation { get; set; }
        public string State { get; set; }
        public bool IsAttacking { get; set; }
        public string PlayerName { get; set; }
        public int Health { get; set; }
        public long LastSync { get; set; }

    }
    public class MyVector
    {
        public float X { get; set; }
        public float Y { get; set; }
        public float Z { get; set; }
    }

这是我的 class

JsonConvert.SerializeObject(myList);//This is how i serilaized  to my data. After that I convert this string to byte array and send to the socket.

在客户端 我从套接字获取字节数组并像这样转换字符串

var data=Encoding.UTF8.GetString(result.Buffer);

比这样反序列化

 var players= JsonConvert.DeserializeObject<List<PlayerInfo>>(data,new JsonSerializerSettings { NullValueHandling=NullValueHandling.Ignore});


这是文本可视化工具中的数据
感谢您的帮助。

它显然看起来像多级序列化,看起来你正在将对象序列化为 json 字符串,然后再将它传递给 websocket 库,在那里它被序列化为字符串。

在这种情况下,尝试多级反序列化或删除不必要的序列化。

试试这个:

var players= JsonConvert.DeserializeObject<List<PlayerInfo>>(
JsonConvert.DeserializeObject<string>(data),
new JsonSerializerSettings { NullValueHandling=NullValueHandling.Ignore});