JSON строка не может десериализоваться с помощью Newtonsoft. Json C# - PullRequest
0 голосов
/ 05 мая 2020

У меня есть приложение форм Xamarin, которое содержит веб-просмотр. Я пытаюсь опубликовать форму, используя этот веб-просмотр, на стороне сервера asp. net aspx. Сначала я отправляю эти данные на входы в локальном файле html внутри моего приложения, используя EvaluateJavaScriptAsyn c. Данные отправляются в файл html без проблем. У меня есть список, который я конвертирую в строку json со стороны моего приложения перед переходом в файл html, и он проходит правильно. Затем с помощью кнопки отправки я отправляю эти данные на страницу aspx на стороне сервера с локального html. Данные отправлены успешно, но если я отправлю эту строку 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}]
...