Estoy tratando de obtener una lista de depuración rápida de usuarios conectados a un servidor (.Net core 3.0). El método es el siguiente (he eliminado todo lo que no se está ejecutando actualmente)
public List<(string, string)> GetUsersAndCurrentRoom() { var result = new List<(string, string)>(); result.Add(("No users", "")); return result; }
El controlador se ve así:
public JsonResult GetUsers() { var users = HubCentral.ChatHub.GetUsersAndCurrentRoom(); var str = JsonConvert.SerializeObject(users); return Json(str); }
La cadena devuelve como: [{"Item1":"No users","Item2":""}]
cuando se depura.
En el lado de JS, simplemente estoy haciendo:
var s = JSON.parse(JSON.parse(req.responseText)); alert(req.responseText);
Estoy confundido por qué necesito ejecutar JSON.parse dos veces. El resultado después del primero es solo una cadena que se ve así: "[{\"Item1\":\"No users\",\"Item2\":\"\"}]"
. El segundo JSON.parse crea un objeto como espero.
Tengo curiosidad por qué ese es el caso y si hay una manera de evitarlo, o si se está comportando como se esperaba.