首页 > 解决方案 > 服务器响应随机不同,这使得 Json.Parse 失败

问题描述

我遇到了一个非常奇怪的问题,让我发疯。我开始注意到我的 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;

标签: javascriptc#jsontypescriptserver

解决方案


我看到您在 HiveMessageType.PlayerInfo 上使用了开关盒。您是否检查过当它不工作时您不是简单地进入错误的开关盒,并且该开关块中的代码没有更新为工作?

如果您每次都使用相同的输入数据和代码,您会得到不同的输出,这似乎很奇怪。


推荐阅读