javascript - 如何在 View javascript中序列化后使用json字符串?

标签 javascript c# json

我想序列化一个 JSON 字符串,但是当我将 JSON 传递给 View 时,我发现代码中的属性是字符串格式,这可能就是我的代码不起作用的原因。 在代码隐藏中序列化我的代码:

var data = new ChartData
{
    labels = new ChartLabels
    {
        labels = new string[3] {"Open", "Close", "Nothing"}
    },
    datasets = new ChartDatasets
    {
        data = new int[3] {20, 10, 3},
        backgroundColor = new string[3] {"#ccf9d6", "#ccf9d6", "#ccf9d6"},
        borderWidth = 1
    }                
};
var json = new JavaScriptSerializer().Serialize(data);
ScriptManager.RegisterStartupScript(
    this, 
    GetType(),
    "ServerControlScript", 
    "addChart(" + json + ");", 
    false);

我想在我的 JavaScript 函数中使用它:

function addChart(data) {
    var ctx = document.getElementById("myChart");
    var myChart = new Chart(ctx, data);

编辑: Json 如下所示:

{"labels":
    {
        "fontSize":0,
        "boxWidth":0,
        "labels":["Open","Close","Nothing"]},
        "datasets":{"label":null,"data":[20,10,3],
        "backgroundColor":["#ccf9d6","#ccf9d6","#ccf9d6"],
        "borderWidth":1 
    }
}

有什么办法可以把它转换成正确的格式吗?或者只是把它放到一个 JavaScript 变量中?

最佳答案

MDN 所述,

The JSON.parse() method parses a JSON string, constructing the JavaScript value or object described by the string.

由于正在执行 addChart javascript 方法调用,但获取的是字符串而不是预期的 JSON 对象,因此必须解析该字符串。

在不了解应用程序的更广泛背景的情况下,很难给出一个很好的答案,因为有几种方法可以实现您的目标。最简单的方法是将 "addChart("+ json + ");", 行更改为 "addChart(JSON.parse("+ json + "));", 以便当应用程序执行此 javascript 时,json 字符串将由 javascript 引擎解析并制成 addChart 方法所需的 javascript 对象。

关于javascript - 如何在 View javascript中序列化后使用json字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46322368/

相关文章:

c# - 使用新成员反序列化对象

sql-server - 如何在 SQL Server 中存储、过滤和检索 JSON 数据

json - 从列中获取 JSON 值

javascript - JQuery如何点击html元素复制到文本区域?

javascript - 更改 CKEditor 表单元素的 HTML(在对话窗口中)

c# - 在 C# Winforms 应用程序中嵌入 CMD 终端

javascript - AJAX 请求 : Not enough or too many segments

Javascript 全局匹配与捕获组

javascript - D3 : SVG downloadable, 但属性消失

c# - 为什么不使用存储库返回部分域模型结果