如何将一个类从Android发送到Signaler

如何将一个类从Android发送到Signaler,android,.net,signalr,Android,.net,Signalr,试图通过SignalR将一个类实例从Android发送到.NET核心站点并返回 Android类:(LatLng是定义为“双纬度,双经度”的谷歌地图api) 信号员呼叫: fun SendPosition(group:String,position:OtherPosition){ hubConnection.send("SendPosition","Something",position) } 收到: hub

试图通过SignalR将一个类实例从Android发送到.NET核心站点并返回

Android类:(LatLng是定义为“双纬度,双经度”的谷歌地图api)

信号员呼叫:

    fun SendPosition(group:String,position:OtherPosition){
        hubConnection.send("SendPosition","Something",position)
    }
收到:

       hubConnection.on("ReceivePosition", { x ->
           Log.d("SignalR: Receive Position","$x ")
        }, OtherPosition::class.java)
在服务器上- C级:


Hub接收消息并回显,但在Android端,接收到的位置的所有字段均为空。看起来问题出在嵌套类上——如果我用两端的两个字符串替换LatLng字段,那么所有这些都可以工作。关于如何修复或调试此问题的任何建议?

AFAICS服务器收到的实际值是一个JsonElement。signer确实将其反序列化为所需类的实例,但在发送时没有序列化它。简单的修复方法是使用对象而不是类名:

 public async Task Sendposition(string groupid, object position)
        {
            // This line only if we need access to object:
            Position op = JsonSerializer.Deserialize<Position>(position.ToString());

            await Clients.All.SendAsync("ReceivePosition", position);
        }
      public class Position
    {
        public int uid { get; set; }

        public LatLng LatLng {get;set;}
        public long Time { get; set; }
        public string UserName { get; set; }
        public string UserId { get; set; }
    }

    public class LatLng
    {
        public double latitude { get; set; }
        public double longitude { get; set; }
    } 
 public async Task Sendposition(string groupid, object position)
        {
            // This line only if we need access to object:
            Position op = JsonSerializer.Deserialize<Position>(position.ToString());

            await Clients.All.SendAsync("ReceivePosition", position);
        }
 public async Task SendPosition(string groupId, Position position)
        {
            //Modify position here then:
            JsonElement root = JsonDocument.Parse(JsonSerializer.Serialize(position)).RootElement;
            await Clients.All.SendAsync("ReceivePosition", root);
        }