首先,我在互联网上搜索了针对我的问题的解决方案。 我发现了几个可以解析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
更改为,请在Javascript中
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}}"
我将创建一个新的问题
答案 0 :(得分:-2)
这有效:
var x = {"graphSettings":{"Caption":"TEST","Min":2.850000000000000e+001,"Max":2.950000000000000e+001}}
console.log(x.graphSettings.Min);
请登录/调试xhr.responseText
,然后查看其中的内容。
如果有任何错误,请记住也将其发布在这里。