【问题标题】:How do I get data out of a JSON object in MVC如何从 MVC 中的 JSON 对象中获取数据
【发布时间】:2018-05-16 13:33:46
【问题描述】:

我有以下存储所有数据的 JSON 对象。

[{"id":1,"CoinValue":"0.01","Count":82,"CoinWeight":76},
{"id":2,"CoinValue":"0.02","Count":86,"CoinWeight":18},
{"id":3,"CoinValue":"0.05","Count":29,"CoinWeight":42},
{"id":4,"CoinValue":"0.1","Count":35,"CoinWeight":90},
{"id":5,"CoinValue":"0.2","Count":23,"CoinWeight":3},
{"id":30,"CoinValue":"0.5","Count":41,"CoinWeight":36}]

我想获取每条记录的 CoinValue 和 Count 以显示在谷歌图表中。目前,我有视图调用 Coin 控制器中名为 Data 的方法来接收数据,但我无法使其正常工作。

币控制器:

    public ActionResult Data()
    {
        //Read Json object
        var fileContents = System.IO.File.ReadAllText(@"H:\EasyAsPiMVC\EasyAsPiMVC\App_Data\MOCK_DATA.json");

        //not sure how to properly pass this data to the view 

        return Json(fileContents);
    }

Javascript 用于处理和显示数据

<script type="text/javascript">
$(document).ready(function () {
    $.ajax({
        type: 'POST',
        dataType: "Json",
        contentType: "application/json",
        url: '@Url.Action("Data", "Coin")',
        success: function (result) {
            google.charts.load('current', {
                'packages': ['corechart']
            });
            google.charts.setOnLoadCallback(function () {
                drawChart(result);
            });
        }
    });

    function drawChart(result) {
        var data = new google.visualization.DataTable();
        data.addColumn("string", "CoinValue"); //might have to be changed
        data.addColumn("number", "Count");
        var dataArray = [];
        $.each(result, function (i, obj) {
            dataArray.push([obj.CoinValue, obj.Count]);
        });
        data.addRows(dataArray);

        var piechart_options = {
            title: 'Coin Tracker Piechart',
            width: 400,
            height: 300
        };

        var piechart = new google.visualization.PieChart(document.getElementById('piechart_div'));
        piechart.draw(data, piechart_options);

        var barchart_options = {
            title: 'Coin Tracker barchart',
            width: 400,
            height: 300,
            legend: 'none'
        };

        var barchart = new google.visualization.BarChart(document.getElementById('barchart_div'));
        barchart.draw(data, barchart_options);
    }
});
</script>

我是一个编程菜鸟,现在已经有一天多的时间无法解决这个问题了。我已经进行了大量研究,但我似乎无法让它发挥作用。

【问题讨论】:

  • 从长远来看,使用角度会帮助你,而不是答案,而是更多的建议。
  • 什么不适合你?你有什么错误吗?

标签: javascript json model-view-controller asp.net-mvc-5


【解决方案1】:

ReadAllText 方法给你一个 string ,它是文件的内容。您需要将其反序列化为 Coin 对象列表。您的客户端代码需要一个对象数组,每个对象都有一个CoinValueCount 属性。所以你需要返回那个 json 数组。

下面是你将如何使用 JSON.NET 来实现的

[HttpPost]
public ActionResult Data()
{
    var path = "Path to your JSON file goes here";
    var fileContents = System.IO.File.ReadAllText(path);
    var list = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Coin>>(fileContents);
    return Json(list);
}

【讨论】:

  • 比你,我之前在尝试与此非常相似的东西,但使用的是一个不同的模型类,它只保存了一个不起作用的硬币对象列表。非常感谢!
猜你喜欢
  • 2011-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-05
  • 2018-10-12
  • 1970-01-01
  • 2022-01-09
  • 2018-05-28
相关资源
最近更新 更多