【问题标题】:Serialize tuple to JSON将元组序列化为 JSON
【发布时间】:2017-11-19 21:07:02
【问题描述】:

尝试将元组序列化为 json:

List<Tuple<string, string, string, string, string, string>> iCalEvents = new List<Tuple<string, string, string, string, string, string>>();

如果我使用以下方式输出值:

string iCalEventsJson = JsonConvert.SerializeObject(iCalEvents);

它产生有效的 json:

[{"Item1":"电影/事件 -- 05/10","Item2":"","Item3":"","Item4":"Lorem ipsum dolor sit amet,consectetur adipisicing elit。萨佩哈鲁姆, similique eaque ratione optio nihil est, nostrum velit minima soluta, recusandae quis,tenetur sunt ut。 Tempora accusamus Provident maxime, sunt debitis quaerat nemo, nostrum cupiditate necessitatibus ipsam deleniti consequatur quos quae odio amet obcaecati, eligendi.","Item5":"2017-05-10","Item6":"2017-05-12"},{"Item1":"电影 / 活动详情 -- 05/12","Item2":"","Item3":"","Item4":"开发影片 / 事件 详情","Item5":"2017-05-12","Item6":"2017-05-12"},{"Item1":"电影 / 活动详情 -- 05/14","Item2":"","Item3":"","Item4":"开发影片 / 事件 详情","Item5":"2017-05-14","Item6":"2017-05-14"},{"Item1":"电影 / 活动详情 -- 05/16","Item2":"","Item3":"","Item4":"开发影片 / 事件 详情","Item5":"2017-05-16","Item6":"2017-05-16"},{"Item1":"电影 / 活动详情 -- 05/19","Item2":"","Item3":"","Item4":"开发影片 / 事件详情","Item5":"2017-05-19","Item6":"2017-05-19"}]

但是,当我将字符串变量传递给 jquery ajax 时:

var json = @iCalEventsJson;    
$.ajax({
        url: '@Url.Action("CreateICalEvent", "ICalEvent")',
        type: 'POST',
        dataType: 'json',
        data: json,
        contentType: 'application/json; charset=utf-8',
        success: function (data) {
            var message = data.Message;
            $("#resultMessage").html(message);
        }
    })

它产生无效的json并导致ajax失败:

[{&quot;Item1&quot;:&quot;Film / Event -- 05/10&quot;,&quot;Item2&quot;:&quot;&quot;,&quot;Item3&quot;:&quot;&quot;,&quot;Item4&quot;:&quot;Lorem ipsum dolor sit amet, consectetur adipisicing elit. Saepe harum, similique eaque ratione optio nihil est, nostrum velit minima soluta, recusandae quis, tenetur sunt ut. Tempora accusamus provident maxime, sunt debitis quaerat nemo, nostrum cupiditate necessitatibus ipsam deleniti consequatur quos quae odio amet obcaecati, eligendi.&quot;,&quot;Item5&quot;:&quot;2017-05-10&quot;,&quot;Item6&quot;:&quot;2017-05-12&quot;},{&quot;Item1&quot;:&quot;Film / Event Detail -- 05/12&quot;,&quot;Item2&quot;:&quot;&quot;,&quot;Item3&quot;:&quot;&quot;,&quot;Item4&quot;:&quot;Development Film / Event Detail&quot;,&quot;Item5&quot;:&quot;2017-05-12&quot;,&quot;Item6&quot;:&quot;2017-05-12&quot;},{&quot;Item1&quot;:&quot;Film / Event Detail -- 05/14&quot;,&quot;Item2&quot;:&quot;&quot;,&quot;Item3&quot;:&quot;&quot;,&quot;Item4&quot;:&quot;Development Film / Event Detail&quot;,&quot;Item5&quot;:&quot;2017-05-14&quot;,&quot;Item6&quot;:&quot;2017-05-14&quot;},{&quot;Item1&quot;:&quot;Film / Event Detail -- 05/16&quot;,&quot;Item2&quot;:&quot;&quot;,&quot;Item3&quot;:&quot;&quot;,&quot;Item4&quot;:&quot;Development Film / Event Detail&quot;,&quot;Item5&quot;:&quot;2017-05-16&quot;,&quot;Item6&quot;:&quot;2017-05-16&quot;},{&quot;Item1&quot;:&quot;Film / Event Detail -- 05/19&quot;,&quot;Item2&quot;:&quot;&quot;,&quot;Item3&quot;:&quot;&quot;,&quot;Item4&quot;:&quot;Development Film / Event Detail&quot;,&quot;Item5&quot;:&quot;2017-05-19&quot;,&quot;Item6&quot;:&quot;2017-05-19&quot;}]

也试过编码:

var json = @HttpUtility.HtmlEncode(iCalEventsJson);
$.ajax({
    url: '@Url.Action("CreateICalEvent", "ICalEvent")',
    type: 'POST',
    dataType: 'json',
    data: json,
    contentType: 'application/json; charset=utf-8',
    success: function (data) {
        var message = data.Message;
        $("#resultMessage").html(message);
    }
});

...但 json 仍然无效:

[{&amp;quot;Item1&amp;quot;:&amp;quot;Film / Event -- 05/10&amp;quot;,&amp;quot;Item2&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;Item3&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;Item4&amp;quot;:&amp;quot;Lorem ipsum dolor sit amet, consectetur adipisicing elit. Saepe harum, similique eaque ratione optio nihil est, nostrum velit minima soluta, recusandae quis, tenetur sunt ut. Tempora accusamus provident maxime, sunt debitis quaerat nemo, nostrum cupiditate necessitatibus ipsam deleniti consequatur quos quae odio amet obcaecati, eligendi.&amp;quot;,&amp;quot;Item5&amp;quot;:&amp;quot;2017-05-10&amp;quot;,&amp;quot;Item6&amp;quot;:&amp;quot;2017-05-12&amp;quot;},{&amp;quot;Item1&amp;quot;:&amp;quot;Film / Event Detail -- 05/12&amp;quot;,&amp;quot;Item2&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;Item3&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;Item4&amp;quot;:&amp;quot;Development Film / Event Detail&amp;quot;,&amp;quot;Item5&amp;quot;:&amp;quot;2017-05-12&amp;quot;,&amp;quot;Item6&amp;quot;:&amp;quot;2017-05-12&amp;quot;},{&amp;quot;Item1&amp;quot;:&amp;quot;Film / Event Detail -- 05/14&amp;quot;,&amp;quot;Item2&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;Item3&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;Item4&amp;quot;:&amp;quot;Development Film / Event Detail&amp;quot;,&amp;quot;Item5&amp;quot;:&amp;quot;2017-05-14&amp;quot;,&amp;quot;Item6&amp;quot;:&amp;quot;2017-05-14&amp;quot;},{&amp;quot;Item1&amp;quot;:&amp;quot;Film / Event Detail -- 05/16&amp;quot;,&amp;quot;Item2&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;Item3&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;Item4&amp;quot;:&amp;quot;Development Film / Event Detail&amp;quot;,&amp;quot;Item5&amp;quot;:&amp;quot;2017-05-16&amp;quot;,&amp;quot;Item6&amp;quot;:&amp;quot;2017-05-16&amp;quot;},{&amp;quot;Item1&amp;quot;:&amp;quot;Film / Event Detail -- 05/19&amp;quot;,&amp;quot;Item2&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;Item3&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;Item4&amp;quot;:&amp;quot;Development Film / Event Detail&amp;quot;,&amp;quot;Item5&amp;quot;:&amp;quot;2017-05-19&amp;quot;,&amp;quot;Item6&amp;quot;:&amp;quot;2017-05-19&amp;quot;}]

我错过了什么?

【问题讨论】:

  • 重点是什么。您不能在 post 方法中绑定 Tuple(它没有无参数构造函数)

标签: c# jquery json ajax asp.net-mvc


【解决方案1】:

您现在可能想使用Html.Raw 或任何等效项。

var json = @Html.Raw(iCalEventsJson);

【讨论】:

  • 这样就完成了!谢谢@尼克拉森
猜你喜欢
  • 2011-09-21
  • 2018-01-11
  • 2016-12-29
  • 1970-01-01
  • 2015-02-28
  • 2017-12-17
  • 1970-01-01
  • 2016-09-15
  • 2014-03-05
相关资源
最近更新 更多