【问题标题】:Parsing C# Dictionary with JSON用 JSON 解析 C# 字典
【发布时间】:2011-11-09 17:33:33
【问题描述】:

我正在尝试使用 JSON 从我的 C# 应用程序中检索键/值对字典,但我在某处搞砸了。这是我第一次使用 JSON,所以我可能只是在做一些愚蠢的事情。

C#代码:

        else if (string.Equals(request, "getchat"))
        {
            string timestamp = DateTime.Now.ToString("yyyy.MM.dd hh:mm:ss");

            Dictionary<string, string> data = new Dictionary<string, string>();
            data.Add(timestamp, "random message");
            data.Add(timestamp, "2nd chat msg");
            data.Add(timestamp, "console line!");

            return Response.AsJson(data);
        }

Javascript:

function getChatData()
{
    $.getJSON(dataSource + "?req=getchat", "", function (data)
    {
        $.each(data, function(key, val)
        {
            addChatEntry(key, val);
        }
    });
}

【问题讨论】:

  • 您似乎在 C# 字典中添加了相同的键,但具有不同的值。更改键名。

标签: c# javascript json dictionary


【解决方案1】:

字典未序列化为数组。字典中的键也必须是唯一的,当您尝试运行服务器端代码时,您可能会遇到一个异常,即已经插入了同名的键。尝试使用值数组:

var data = new[]
{
    new { key = timestamp, value = "random message" },
    new { key = timestamp, value = "2nd chat msg" },
    new { key = timestamp, value = "console line!" },
};
return Response.AsJson(data);

序列化的 json 应该如下所示:

[ 
    { "key":"2011.09.03 15:11:10", "value":"random message" }, 
    { "key":"2011.09.03 15:11:10", "value":"2nd chat msg" }, 
    { "key":"2011.09.03 15:11:10", "value":"console line!" }
]

现在你可以在你的 javascript 中循环:

$.getJSON(dataSource, { req: 'getchat' }, function (data) {
    $.each(data, function(index, item) {
        // use item.key and item.value to access the respective properties
        addChatEntry(item.key, item.value);
    });
});

【讨论】:

  • 这不起作用,但我检查了我正在使用的框架,看起来 Response.AsJson 将模型(对象)作为参数。与 JSON 一起使用的最佳替代方案是什么?
  • @Brett Powell,什么没用?呈现的 JSON 看起来如何?当您在 FireBug 中检查 AJAX 请求时,您看到了什么?
  • 天哪,我忘记了 Firebug(很少进行网络编码)。只是缺少一个立即解决它的“)”。非常感谢!
  • @Brett Powell,确实如此。我的错误对不起。我已经确定了答案。
  • 不,我在代码中做了完全相同的事情,所以根本不是问题!不过给你一个问题。我基本上使用它来检索我的 C# 控制台应用程序窗口中的所有行,并在 Web 界面中打印它们。存储可以序列化为 JSON 的时间戳/用户名/消息的最佳方法是什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多