javascript - 无法将 JSON 转换为对象
问题描述
首先,我在互联网上搜索了我的问题的解决方案。我找到了几个可以解析我的 JSON 并告诉我它是有效的网站。我事先知道这一点,因为它源自我的 SQL Server。
但是当用下面的 json 调用 JSON.parse(...) 时,我得到一个字符串而不是一个对象!
到目前为止我的代码:
function GetConfig(url) {
var xhr = new XMLHttpRequest();
xhr.open("GET", url, false);
xhr.send(null);
if (xhr.status === 200)
return JSON.parse(xhr.responseText);
else
return null;
};
/*
xhr.responseText returns this JSON:
{"graphSettings":{"Caption":"TEST","Min":2.850000000000000e+001,"Max":2.950000000000000e+001}}
*/
function GenerateHighChart(ressponse) {
var data = GetConfig('/api/Settings/Powerlog/Temperatures');
}
但是当尝试将数据作为对象访问时,我收到错误,因为数据仍然是一个字符串
var a = data.graphSettings.min;
更新
我相信问题出在我的 API 上
所以这是我的控制器:
[Produces("application/json")]
[Route("api/Settings")]
public class APIGetSettings : Controller
{
private string InternalGetJson(string commandText, params object[] parameters)
{
var json = GetJson(commandText, parameters);
return json.Replace("[", "").Replace("]", "");
}
private string GetSettingFromName(string name) => InternalGetJson("select * from fn_GetVisualSettings(@0) for json path", name);
[Route("Powerlog/Temperatures")]
public IActionResult Powerlog_Temperatures() => new JsonResult(GetSettingFromName("Powerlog/Temperatures"));
}
/*
JSON returned from GetSettingFromName
{"graphSettings":{"Caption":"TEST","Min":2.850000000000000e+001,"Max":2.950000000000000e+001}}
*/
如果我更改GetConfig
为
if (xhr.status === 200)
return JSON.parse(xhr.responseJSON);
else
return null;
responseJSON is undefined
** 更新 **
我发现了这个错误。问题是从我的 API 返回的文本
我明白了:
"{\"graphSettings\":{\"Caption\":\"TEST\",\"Min\":2.850000000000000e+001,\"Max\":2.950000000000000e+001}}"
但预计会这样:
"{"graphSettings":{"Caption":"TEST","Min":2.850000000000000e+001,"Max":2.950000000000000e+001}}"
我将创建一个新问题
解决方案
这是有效的:
var x = {"graphSettings":{"Caption":"TEST","Min":2.850000000000000e+001,"Max":2.950000000000000e+001}}
console.log(x.graphSettings.Min);
请记录/调试xhr.responseText
并查看那里有什么。
如果您有任何错误,请记住也将其发布在这里。
推荐阅读
- python - 使用图像作为类对象属性,然后在 Tkinter 标签小部件中打开该图像
- python - 实现数学公式
- javascript - 按钮需要点击两次才能触发脚本
- angular - 使用primeng打开对话框在角度6处最大化错误
- python -
对象不可迭代,Django REST 框架 - javascript - Rails/JS - 2018 年带有 AJAX 的 Like 按钮
- pytorch - 如何在 Pytorch 中更改每个通道的填充输入大小?
- javascript - 我可以添加什么代码使这句话出现在我的法语网站上?
- google-sheets - 'GETPIVOTDATA' 导致公式解析错误
- dart - 在 Dart 中,在整数的顺序列表中,我如何在项目之间找到一个数字?