JSON字符串无法使用Newtonsoft.Json C#反序列化

时间:2020-05-05 10:26:19

标签: c# asp.net json webforms json.net

我有一个包含Webview的Xamarin表单应用。我正在尝试使用该webview将表单发布到服务器端asp.net aspx页面。我首先使用 EvaluateJavaScriptAsync 将这些数据发送到应用程序内本地html文件的输入中。数据提交到html文件没有问题。 我有一个列表,我将其从应用程序一侧转换为json字符串,然后传递给html文件,然后正确传递。然后从提交按钮,我将这些数据从本地html发布到服务器端的aspx页面。数据提交成功,但是如果我发布该json字符串,则从服务器端会出现错误(异常)。

例外...

JsonReaderException Unexpected character encountered while parsing value: o. Path'', line 1, position 1

Xamarin侧面...

对象类。

public class PaymentData
    {
        public string access_key { get; set; }
        public string profile_id { get; set; }
        public string transaction_uuid { get; set; }
        public string signed_field_names { get; set; }
        public string unsigned_field_names { get; set; }
        public string signed_date_time { get; set; }
        public string locale { get; set; }
        public string transaction_type { get; set; }
        public string reference_number { get; set; }
        public string currency { get; set; }
        public string bill_to_forename { get; set; }
        public string bill_to_surname { get; set; }
        public string bill_to_email { get; set; }
        public string bill_to_address_line1 { get; set; }
        public string bill_to_address_state { get; set; }
        public string bill_to_address_country { get; set; }
        public string bill_to_address_city { get; set; }
        public string polNum { get; set; }
        public string userName { get; set; }
        public string amount { get; set; }
        public double duesTotal { get; set; }
        public double addtAmt { get; set; }
        public double deposits { get; set; }
        public double duesPaid { get; set; }
        public List<DueData> lifeDueData { get; set; }

    }

public class DueData
    {
        public string paidDue { get; set; }
        public double premium { get; set; }
        public double lateFee { get; set; }
    }

添加数据后,我将对象转换为json字符串

PaymentData lData = new PaymentData();   
string jsonOutput = JsonConvert.SerializeObject(lData);

HTML文件...

<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <script type="text/javascript">
        function updatetextonwebview(jSonOgj) {

            var plots = JSON.parse(jSonOgj);

            document.getElementById("textElement1").value = plots.access_key;
            document.getElementById("textElement2").value = plots.profile_id;
            document.getElementById("textElement3").value = plots.transaction_uuid;
            document.getElementById("textElement4").value = plots.signed_field_names;
            ...........................
            document.getElementById("textElement23").value = plots.deposits;
            document.getElementById("textElement24").value = plots.duesPaid;
            document.getElementById("textElement25").value = plots.lifeDueData;

            return plots.lifeDueData;

        }
    </script>

</head>
<body align="center">

    <div class="container card">

    <form id="payment_form" action="//....payment_confirmation_life.aspx" method="post">

        <input type="hidden" class="hiddeninput" hidden="hidden" id="textElement1" name="access_key">
        <input type="hidden" class="hiddeninput" hidden="hidden" id="textElement2" name="profile_id">
        <input type="hidden" class="hiddeninput" hidden="hidden" id="textElement3" name="transaction_uuid">
        <input type="hidden" class="hiddeninput" hidden="hidden" id="textElement4" name="signed_field_names">
        ........................
        <input type="hidden" class="hiddeninput" hidden="hidden" id="textElement20" name="userName">
        <input type="hidden" class="hiddeninput" hidden="hidden" id="textElement21" name="duesTotal">
        <input type="hidden" class="hiddeninput" hidden="hidden" id="textElement22" name="addtAmt">
        <input type="hidden" class="hiddeninput" hidden="hidden" id="textElement23" name="deposits">
        <input type="hidden" class="hiddeninput" hidden="hidden" id="textElement24" name="duesPaid">
        <input type="hidden" class="hiddeninput" hidden="hidden" id="textElement25" name="lifeDueData">

        <input type="submit" id="submit" name="submit" value="Proceed" />

    </form>

    </div>

</body>
</html>

payment_confirmation_life.aspx代码......

protected void Page_Load(object sender, EventArgs e)
{

    if (!Page.IsPostBack)
    {
        if (Request.Form.Count > 0)
        {

            if (Request.Form["lifeDueData"] != null)
            {

            string demadData = Request.Form["lifeDueData"].ToString().Trim();

            List<DueData> duelist = JsonConvert.DeserializeObject<List<DueData>>(demadData);

            }
        }
    }
}

DeserializeObject行中发生异常

JSON ...

[{"lateFee":250,"paidDue":"2020/01","premium":11896}]

0 个答案:

没有答案