【发布时间】:2019-04-16 01:21:04
【问题描述】:
我遇到了一个非常奇怪的问题,让我发疯。我开始注意到我的 Json.Parse 有时会失败。看起来是这样的
const Info = JSON.parse(response);
this.onInfoUpdate(Info.InfoConfig[0]);
我得到的两个不同的回应是
"{\"InfoConfig\":[{\"InfoId\":1,\"InfoName\":\"Derp\",\"Pid\":0,\"StartDate\":\"2018-10-31T00:00:00\",\"EndDate\":\"2018-11-10T00:00:00\",\"InclusiveFilters\":null,\"ExlusiveFilters\":null,\"Type\":0}],\"InfoIds\":["1"],\"Guid\":\"2#myman\"}"
它无法解析为 Json 对象。我不知道为什么它有时会决定删除 \ 并且整个数组周围也没有“”
{"InfoConfig":[{"InfoId":1,"InfoName":"Derp","Pid":0,"StartDate":"2018-10-31T00:00:00","EndDate":"2018-11-10T00:00:00","InclusiveFilters":null,"ExlusiveFilters":null,"Type":0}],"InfoIds":["1"],"Guid":"2#myman"}
这个工作正常,JSON.parse 将其转换为 Json 对象。但有时我会得到回应
这是将数据发送到前端的部分
case HiveMessageType.PlayerInfo:
var playerNotification = (PlayerInfoNotificationModel)message;
var InfoIds = JsonConvert.SerializeObject(playerNotification.InfoIds);
var serializedListWithInfo = JsonConvert.SerializeObject(playerNotification);
SignalRClient.SendAsync("RegisterUserToMultipleGroups", playerNotification.Guid, InfoIds, serializedListWithInfo);
break;
【问题讨论】:
-
后端的代码是什么?
-
@maxs87 在发送它的部分编辑
-
我不确定 signalR,但我会在没有 SerializeObject 的情况下测试 SendAsync,这对我来说似乎很奇怪,默认情况下这种方法不进行序列化。此外,查看整个 switch case 结构也会很有趣——应该有合乎逻辑的解释,为什么你在不同的情况下会有不同的行为。也许你以不同的方式处理不同的“案例”?
-
@maxs87 也没有修复它:/ 演员结构是因为它是一个接收消息的函数,然后它会向所有用户或仅向特定用户广播。
-
看起来第一种情况正在被双重序列化。您可能正在序列化过程中早些时候已经序列化的东西吗?另请注意,某些框架旨在为您处理序列化,因此如果您在此之上进行序列化,您最终会看到反斜杠。
标签: javascript c# json typescript server