【问题标题】:Deserialize JSON in C# to a LinkedList of Tuples将 C# 中的 JSON 反序列化为元组的 LinkedList
【发布时间】:2017-12-17 00:03:41
【问题描述】:

我的 HTML 代码中有一组票证,我使用 JQuery 从中收集信息并通过 AJAX 成功以 JSON 格式发布到代码隐藏。

 这是 JSON 文件:

{
                'arrayTickets':
                               [
                                               {"num":1,"rec":"SWAFAD","temp":"0","id":"f39443aa-1ae1-4d18-82b8-468f14dac507"},

                                              {"num":1,"rec":"admin","temp":"0","id":"20bf1fea-b03e-4a28-922a-9618c8c8a73f"}                                           ] 
}

问题是我似乎无法将其反序列化为我想要的结构类型:

[WebMethod]
public static void cmd_gravar_Click(string arrayTickets)
{
    JavaScriptSerializer json = new JavaScriptSerializer();

    LinkedList<Tuple<int, string, string, string>> tickets = json.Deserialize<LinkedList<Tuple<int, string, string, string>>>(arrayTickets);
}

我得到错误:

没有为类型定义无参数构造函数 'System.Tuple`4[[System.Int32, mscorlib, 版本=4.0.0.0, 文化=中性,PublicKeyToken=b77a5c561934e089],[System.String, mscorlib,版本=4.0.0.0,文化=中性, PublicKeyToken=b77a5c561934e089],[System.String, mscorlib, 版本=4.0.0.0,文化=中性, PublicKeyToken=b77a5c561934e089],[System.String, mscorlib, 版本=4.0.0.0,文化=中性,PublicKeyToken=b77a5c561934e089]]'。

我想继续使用这个结构,因为我已经创建了一个工作方法,可以用它将数据保存到数据库中。这是在网络表单中完成的。

编辑:使用 VS2012

【问题讨论】:

    标签: c# json deserialization json-deserialization


    【解决方案1】:

    据我所知,.net 反序列化器在元组方面存在问题。我认为 JSON.net 应该可以解决您的问题

    https://www.nuget.org/packages/Newtonsoft.Json/

    用法:

     var result = JsonConvert.DeserializeObject<LinkedList<Tuple<int, string, string, string>>>(arrayTickets); 
    

    【讨论】:

    • 谢谢。无法安装该软件包,因为我在 VS2012 中,显然我需要 NuGet 2.12+ 不可用。
    • 等等,原来我不需要安装它,我可以运行代码。问题是变量“result”具有正确的项目数,但 int 值全为 0,字符串全为 null。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-02
    • 2015-06-07
    相关资源
    最近更新 更多