简体   繁体   English

将Json反序列化为C#列表

[英]Deserializing Json to C# list

I am trying to deserialize JSON to C# list. 我正在尝试将JSON反序列化为C#列表。 I have the Jquery code as, 我有Jquery代码,

    $(document).ready(function () {
        $("#btn_check").click(function () {
            var str="";
            x = $("#frm").serializeArray();
            $("#Label1").empty();
            $.each(x, function (i, field) {
              //  $("#Label1").append(field.name + ":" + field.value + " ");

                str = str + field.name + ":" + field.value + " ";

            });
            var jsonstr=JSON.stringify(str);            });
    });

after stringify, I get something weird as jsonstr= __VIEWSTATE:/= __VIEWSTATEGENERATOR:172284EE __EVENTVALIDATION:/wEWNAKauo6nDAK5rJ0YAp7D/4IGAoPa4e0LAujww9gBAs2HpsMHArKeiK4NApe16pgDAvzLzIMJApH2i8IBAvaM7qwHAp7Dv7UBAp7Dq9oIAp7Dl/8PAp7Dg6QHAp7Dj6IEAp7D+8YLAp7D5+sCAp7D05AKAp7Dn9wLAp7Di4EDAoPaoaAHAoPajcUOAoPa+ekFAoPa5Y4NAoPa8YwKAoPa3bEBAoPaydYIAoPatfsPAoPagccBAoPa7esIAujwg4sNAujw768EAujw29QLAujwx/kCAujw0/cPAujwv5wHAujwq8EOAujwl+YFAujw47EHAujwz9YOAs2H5vUCAs2H0poKAs2Hvr8BAs2HquQIAs2HtuIFAs2HoocNAs2HjqwEAs2H+tALAs2HxpwNAs2HssEEAvCFnqIPppJbhAvF8AzSoMd/uZfiRXpzWu0= check_0:on check_1:on check_2:on check_3:on check_4:on check_5:on check_6:on check_7:on check_8:on check_9:on check_10:on check_11:on check_12:on check_13:on check_14:on check_15:on check_16:on check_17:on check_18:on check_19:on check_20:on check_21:on check_22:on check_23:on check_24:on check_25:on check_26:on check_27:on check_28:on check_29:on check_30:on check_31:on check_32:on check_33:on check_34:on check_35:on check_36:on che 字符串化后,我得到一些奇怪的jsonstr = __VIEWSTATE:/ = __VIEWSTATEGENERATOR:172284EE __EVENTVALIDATION:/ wEWNAKauo6nDAK5rJ0YAp7D / 4IGAoPa4e0LAujww9gBAs2HpsMHArKeiK4NApe16pgDAvzLzIMJApH2i8IBAvaM7qwHAp7Dv7UBAp7Dq9oIAp7Dl / 8PAp7Dg6QHAp7Dj6IEAp7D + 8YLAp7D5 + sCAp7D05AKAp7Dn9wLAp7Di4EDAoPaoaAHAoPajcUOAoPa + ekFAoPa5Y4NAoPa8YwKAoPa3bEBAoPaydYIAoPatfsPAoPagccBAoPa7esIAujwg4sNAujw768EAujw29QLAujwx / kCAujw0 / cPAujwv5wHAujwq8EOAujwl + YFAujw47EHAujwz9YOAs2H5vUCAs2H0poKAs2Hvr8BAs2HquQIAs2HtuIFAs2HoocNAs2HjqwEAs2H + tALAs2HxpwNAs2HssEEAvCFnqIPppJbhAvF8AzSoMd / uZfiRXpzWu0 = check_0:上check_1:上check_2:在check_3:在check_4:在check_5:在check_6:在check_7:在check_8:在check_9:在check_10:在check_11:在check_12:在check_13:在check_14:在check_15:在check_16:在check_17:在check_18:在check_19 :on check_20:on check_21:on check_22:on check_23:on check_24:on check_25:on check_26:on check_27:on check_28:on check_29:on check_30:on check_31:on check_32:on check_33:on check_34:on check_35:on check_36:on che ck_37:on check_38:on check_39:on check_40:on check_41:on check_42:on check_43:on check_44:on check_45:on check_46:on check_47:on check_48:on check_49:on ck_37:on check_38:on check_39:on check_40:on check_41:on check_42:on check_43:on check_44:on check_45:on check_46:on check_47:on check_48:on check_49:on

check_0 to check_1 are the dynamically created checkboxes and I want to get their values in C# as list or in any form to interpret and push them into Database. check_0到check_1是动态创建的复选框,我想以C#形式或以任何形式获取它们的值以解释它们并将其推入数据库。

asp.net: asp.net:

<form id="frm" runat="server">

    <asp:Panel ID="pnl_seat" runat="server">
        <asp:PlaceHolder ID="plhdr_seat" runat="server">
         checkboxes are dynamically created here
       </asp:PlaceHolder>
        <br />
        <button id="btn_check" type="button">Serialize form values</button>
        <asp:Button ID="btn_submit" runat="server" Text="Submit"  OnClick="btn_submit_Click" />
        <br />

        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label><br />

    </asp:Panel>

</form>

picture: 图片: 在此处输入图片说明

C# code: C#代码:

 using Newtonsoft.Json;
class abc // some class
{   
    protected void btn_submit_Click(object sender, EventArgs e)
    {
        List<Test> myDeserializedObjList = (List<Test>)   Newtonsoft.Json.JsonConvert.DeserializeObject(Request["jsonstr"], typeof(List<Test>));
    }
 }

the above code I got it from codeproject.com . 上面的代码我是从codeproject.com获得的 But on running this code, I am getting an exception that "str" as "null". 但是在运行这段代码时,我遇到了一个异常,即“ str”为“ null”。 How to push the label1 or str to server side? 如何将label1或str推送到服务器端? Help me please. 请帮帮我。

Could you paste more code? 您可以粘贴更多代码吗? It's hard to find any issues from the limited source code. 从有限的源代码中很难找到任何问题。 You may send the str to server using an ajax request: $.get('your url', {str: str}) 您可以使用ajax请求将str发送到服务器: $.get('your url', {str: str})

By the way, It seems the str is not a valid JSON string. 顺便说一句,看来str不是有效的JSON字符串。 str = JSON.strigify(x) will stringify the object to a JSON string. str = JSON.strigify(x)将对象字符串str = JSON.strigify(x) JSON字符串。


Try this: ``` 试试这个:

$(document).ready(function () {
    $("#btn_check").click(function () {
        var x = $("#frm").serializeArray();
        $("#Label1").empty().text(JSON.stringify(x));
    });
});

using Newtonsoft.Json;
class abc // some class
{
    protected void btn_submit_Click(object sender, EventArgs e)
    {
    List<Test> myDeserializedObjList = (List<Test>) Newtonsoft.Json.JsonConvert.DeserializeObject(Label1.Text, typeof(List<Test>));
    }
}

``` ```

JQUERY: JQUERY:

 $(document).ready(function () {
        $("#btn_check").click(function () {
            var str = "";
            x = $("#frm").serializeArray();
             str = JSON.stringify(x);
           // $("#HiddenField1").Value(str);
            $('#<%=hdnSelectedTicket.ClientID %>').val(str);
           <%-- $('#<%=hdnSelectedTicket.ClientID %>')--%>

        });
    });

ASP.NET: ASP.NET:

<form id="frm" runat="server">
     <asp:HiddenField ID="hdnSelectedTicket"  runat="server" />
    <asp:Panel ID="pnl_seat" runat="server">
        <asp:PlaceHolder ID="plhdr_seat" runat="server"></asp:PlaceHolder>
        <br />
        <button id="btn_check" type="button">Serialize form values</button>
        <asp:Button ID="btn_submit" runat="server" Text="Submit" OnClick="btn_submit_Click" />
        <br />

        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label><br />


    </asp:Panel>

</form>

C#: C#:

 using Newtonsoft.Json;
protected void btn_submit_Click(object sender, EventArgs e)
    {
        //string a = hdnSelectedTicket.Value;
        List<Test> myDeserializedObjList = (List<Test>)Newtonsoft.Json.JsonConvert.DeserializeObject    (hdnSelectedTicket.Value, typeof(List<Test>));

    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM