javascript - 服务器响应随机不同,这使得 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;
解决方案
我看到您在 HiveMessageType.PlayerInfo 上使用了开关盒。您是否检查过当它不工作时您不是简单地进入错误的开关盒,并且该开关块中的代码没有更新为工作?
如果您每次都使用相同的输入数据和代码,您会得到不同的输出,这似乎很奇怪。
推荐阅读
- flutter - 如何从小部件导航到另一个页面
- python - 如何使用 Seaborn 在条形图上显示每组的中值
- asciidoc - 如何让表格占据整个可用画布宽度?
- python - 维基命令 discord.py
- python - 错误:命令出错,退出状态为 1:升级到 Python 3.9.2 后
- javascript - 更改视口宽度/高度时调整画布大小而无需刷新
- javascript - 为什么名称变量在 VS Code 上显示为带有删除线?
- firebase - 如何从 firebase 获取特定文档数据并以字符串形式返回
- python - 一个 len(list) 给出 TypeError: 'NoneType' 类型的对象没有 len()
- c++ - 2的下一个幂