【发布时间】:2020-08-31 11:23:54
【问题描述】:
在下面的代码中data 变量是一个简单的字符串,而不是我希望的json。
这是一个客户端代码:
const battleId = useSelector(selectBattle);
const [waitingBattle, setWaitingBattle] = useState(
{
ProcessingBattleDateModified: 30,
CharactersInBattle: {}
}
);
fetch('https://localhost:44362/battles/GetWaitingRoomBattle/' + battleId, {
method: 'GET',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
}
}).then(response => response.json()).then((data) => {
setWaitingBattle(data);
console.log(data);
})
您可能会注意到我正在使用 response.json(),正如其他问题中所建议的那样。
这是我的服务器端点:
[HttpGet("GetWaitingRoomBattle/{battleId}")]
public JsonResult GetWaitingRoomBattle(Guid battleId)
{
BattleEntity battle = _battleService.GetBattle(battleId);
return new JsonResult(JsonConvert.SerializeObject(battle));
}
结果如下:
有什么建议吗?
【问题讨论】:
-
你确定服务器真的返回了什么吗?调试器控制台的网络选项卡中有什么?检查响应数据。
-
您的服务器将响应数据序列化两次...如果您仅在获得字符串后对其进行反序列化。
-
你应该这样做
return new JsonResult{ Data = battle}; -
是的,服务器将对象作为字符串返回。是的,它被序列化了两次,这是错误的。不,我不能做 JsonResult{ Data = Battle},因为我想使用 Newtonsoft Serializer。
-
您将 newtonsoft.json 配置为默认的 json 序列化程序。 dotnetcoretutorials.com/2019/12/19/…
标签: javascript c# json reactjs serialization