ranio Ответов: 0

Как разобрать строку json в ASP.NET с помощью C# без десериализации?


Я хочу разобрать строку json в asp.net с помощью c# без обессоливания. Я строю строку json с помощью string builder.

Я получаю исключение незаконных символов или около того

Я хочу получить значения зашифрованных данных запроса и зашифрованных данных в приведенной ниже строке json:

Я строю строку json с помощью string builder и без десериализации
Моя строка json выглядит следующим образом:
{"webServiceRequest":{"entityDetails":{"entityId":"123","userName":"TEST","password":"TEST123","serviceId":"12344321","requesterWsiRef":"WSI592944205332743307"},"requestDetails":{"encrypyedRequestKeyData":"fye1gPxpyejR35ziHJyAAQ==","encryptedRequestData":"kzIfErBjhTiZL+9O19aD/Wfo2ezC2jeTEB/WAGZ/8VyDPNpxlyzwUdQWauFk1/bvIVhgw57nm1xhGgfUhk7O+YpiJnBzUVAaPvjwF7NXciKx+ys+niBsHwli37K2ZDUkh0Vv4sHpUaEW1fEvuB+v+FQWNDwNvvWasQQKzQLSLzVgFAiKSQ07tu4OjXt9i0/cArrshEMGKZnutN9XgKmCD+xNVqdXhOWhDFE0SBew6AKcp4jf2dgcBlJ8yTCcQMO1qYqijC/2KmTDV0cwNjqH1/DEDCMLiQPYP8eBg/PVjcZJQ8k0Wfzr6W05AH0hPnSaAF0dHbbD0Es2Iktaq0jgtP9nLpSna0n9lv1Fa9CjnSeaIf+GXVI1Zd1gMXdttzQQUVMv5MZDnXyeAe8+1wIZipiX52jRdHdXnJSHCSVEvi7IjyM14etN0tfGF6HYHas9G2tcromwJCYJfKC20bjQWke9vFFZ4BdwIIv72FWpfXhk4WQLJviFXJ4b9xaadsPELKPL+tMTuGMXSl8SNBKWyYjOv0b5zVsvKirRNMc24RIoMkLSV86jePfh5bXhgXkXFChQvbIYPISd/yFxOFPoZvsIA8Zq9x3uYxw4V3BmSjfJKToIIH2qenbKyJjs9yA4LY8uG23zXfSDzGReM5pmZTMJdmpqY5RKd77+TKr1sB3neR0qUG//V1BU1Ljk6Y4dvQUxnquWNAlJCXVsHRsGipvNzqiMP4ZESMoLt3w/P4Txbqz46wvgCgICHrh6kxikV6ubynv1MMavhnE7plq3cI2Tmh/XgO7+fYFwRcKZ/SUBWXprBIqdGyyqGK49ics8++IXocFZ2IGJe4OhklsRJabX0L0S3sP9/VCQZiMseS/THeF5jtScQWwNixSwsmC0QchTS83fHmiJ7mfvF2W9c1hremX0g8J5YG1nwxBXtQUz8gTuul1+1eiiJ1v8RHMAYBAUslE17H1YZeNJa4SVrtYxHCG3YtbdT/ZRYJ5aVcJH3EmqJ/HoQ3smqaxNUpO3Yd8ESboAL5uOa5Zn5XoKaU9P3R1tshYX4gC40w4R1UGBkdhuIfCYqv6dcOsDpLOIcoxMqhthz9Cge4W5faMELuWp5+e19qYZzGwVPEDnQ1d5JL4xbMmsMCkzbruTT1Hm7gBumju9L/pq9qEzu3aFaXlgaWwYxd+4V/ly9rI/GEFJb0rAZVjyRsaiPyPqIuzZiD/UWUT99+rBNtnwi9Qq2R7JrcNCAs/rn4dbqwDfTSFgLNnPzY6x7aVbCOf4rnfu2wRyiVL+9ElxPMm9Kc7sgNrHUcCizqCwDt0eW4KaA9vDsFmmLWpX+0bLXJRI3PRDvYQdzGkrsdgGbpC1wv/BiyO6DblfFdKwMDWMwhxhglSEp+nw4W9QanuChRa+Jn6aYIz91sAL0VfcquEFQVfVYfAwuPhIEtC2cqBPs6aahUEq4+3p6kvenzkKlXHA4QRVpnk/b/6IdqQCoUoPaccM1VUzGzUALYKf4dl+CGlId6bXqphUB33tQiSelAhMbeE+pRbJvu7+4kMj5D6Dkbn4jd4R7fhwMVJA+0/nzDShiRoylt6hI4dDOj1ySwvjE4uBk1B4IaAges0nnKlZXTtZKk1QXKj9I47bjLtkpzjweHx9HsJ6f4Ci8O3wRMCwCt7qRzLMQv/3hvmUrYZRgG227KhBt5UyPqs1KN3kP7W/xnNkwLKxowVMXERIVwupLcx1SxEGRolxV2LPd96ItovOw09/ADjKwD9jNMDt512nYdXsnGvTQogJwFOC0RsgAas4QhdrC79R+FZeUn0uWnFa9eKTvRaAwBYabivqi7tAA8r5gI7Xby4rjwaZVM5+flOfY7Z60pXu6PNvi/IgXzV257hRi9Zqb8TWjWgDORyVkbOKOeAoK3miXbeWiqAW6RNWbv+YX4bLMxWm9Jr9I0PwUpISIaBbsdng/mG42Ea3+qvuzgIYXDJLqDP2ZSPDeDSfJV2vslB1Iy/7jveFrF9UhmbN4GpnGyx7VDituACbxvsxzrIdNjBHHEyKXsEH00I8SydKUm51NNBBzVGfaUmPzXtRAgkdLR57NEBMoEWVF3FMS8MZz0WyA2nblwzfGwKkwE7XNiB81bGMc89SeKgv313A6xTFXkUy+0QwL1q67eecMrVI9vRzxntry36TGAlcRHlTLDg6fuNbyjVrM4rDoiecaUeH4jOBYfiTI9tIujl1FMZdHdf0YXC7sGl0SDEAXAMDN0zjlNRHUbUM+tf6CN5pewkFtotkBKTHp1SwoPTtq+1OSB3sEtgf3NZTTFKqqhky+o3Grxv/zU94JjqdAs6MC1UPhFp6Fl01Bj6tmy4="}}}


Что я уже пробовал:

Основной код пробовал:
Я строю строку json с помощью string builder и без десериализации.
if (objAPI.strFormatType.ToLower()=="json")
             {
                 string jsonstring1 = @"

                      ""entityId"": """ + objreqAPI.EntityId.Trim() + @""" ,
                      ""userName"": """ + objreqAPI.CB_WSI_USERNAME.Trim() + @"""
                      ""password"": """ + objreqAPI.CB_WSI_PASSWORD.Trim() + @"""
                      ""serviceId"": """ + objreqAPI.serviceId.Trim() + @"""
                      ""requesterWsiRef"": """ + objreqAPI.requesterWsiRef.Trim() + @"""
                 },
             ";

                 string jsonstring2 = @"
                  ""encrypyedRequestKeyData"": """ + objreqAPI.encrypyedRequestKeyData.Trim() + @""" ,
                  ""encryptedRequestData"": """ + objreqAPI.encrypyedRequestData.Trim() + @"""
                 }
              ";


                 objectjson
                    .Append("{")
                    .Append(Environment.NewLine)
                     .Append("\"")
                     .Append("WebserviceRequest")
                      .Append("\"")
                     .Append(":{")
                     .Append(Environment.NewLine)
                      .Append("entityDetails")
                       .Append(":{")
                      .Append("\"")
                      .Append(jsonstring1)
                       .Append("\"")
                  .Append("requestDetails")
                   .Append("\"")
                   .Append(":{")
                  .Append(jsonstring2)
                  .Append(Environment.NewLine)
                    .Append("}")
                    .Append(Environment.NewLine)
                     .Append("}");


                 objreqAPI.RequestAPI =  objectjson.ToString();

F-ES Sitecore

Ваш формат JSON не массив, так JArray.Парс не сработает. Вместо этого используйте JObject.Parse и измените остальную часть кода по мере необходимости.

ranio

Я попытался получить строку encryptyedrequestkeydata и encryptedRequestData json, как показано ниже:

Но получение ссылки на объект проблема.
строка jsonString = objApi.ReqAPI;
ВАР подробности = создание экземпляра.Синтаксический анализ(jsonString);

objApi.encryptedRequestKeyData = details["encryptedrequestkeydata"].Метод toString();
objApi.encryptedRequestData = details["encryptedRequestData"].Метод toString();


Моя строка json выглядит следующим образом:
{"webServiceRequest":{"entityDetails":{"entityId":"123","userName":"TEST","password":"TEST123","serviceId":"12344321","requesterWsiRef":"WSI592944205332743307"},"requestDetails":{"encrypyedRequestKeyData":"fye1gPxpyejR35ziHJyAAQ==","encryptedRequestData":"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"}}}

F-ES Sitecore

Ваш json имеет только одно свойство-webServiceRequest. Это свойство представляет собой объект с двумя свойствами: entityDetails и requestDetails. Затем внутри requestDetails находятся свойства, к которым вы хотите получить доступ. Поскольку json-это древовидная структура, вам нужно спуститься вниз по иерархии, чтобы найти данные. Так вам корень webServiceRequest собственность, то от этого вам requestDetails, то с этого получить нужные свойства. Просто делаю

подробности["encryptyedrequestkeydata"]

не собирается сканировать весь объект в поисках свойства с таким именем. google "c# traverse nested json" для примеров того, как это сделать.

ranio

Я передал зашифрованные данные запроса и зашифрованные данные ключа запроса в asp.net с помощью c#. Но при расшифровке строки json я получаю следующее: есть символы, такие как \u003e,\u003c, которые должны приходить для xml-символов

Client:{"webServiceResponse":{"responseDetails":{"encrypyedResponseKeyData":"MyKey","encryptedResponseData":"\u003cwebServiceInputDetails\u003e\r\n    \u003centityDetails\u003e\r\n        \u003cbankId\u003e011\u003c/bankId\u003e\r\n        \u003cpassword\u003e011\u003c/password\u003e\r\n        \u003csignature\u003e\u003c/signature \u003e\r\n        \u003cuserName\u003e011\u003c/userName\u003e\r\n    \u003c/entityDetails\u003e\r\n    \u003cwsData\u003e\r\n        \u003csendingInstutionRef\u003etest\u003c/sendingInstutionRef\u003e\r\n        \u003corderingCustomerAccount\u003etest\u003c/orderingCustomerAccount\u003etest\r\n        \u003corderingCustomerName\u003etest\u003c/orderingCustomerName\u003e\r\n        \u003cbeneficiaryAccount\u003eAE890100000112028030820\u003c/beneficiaryAccount\u003etest\r\n        \u003cbeneficiaryAccountName\u003etest1\u003c/beneficiaryAccountName\u003etest\r\n        \u003cbeneficiaryAccountAddress\u003etest\u003c/beneficiaryAccountAddress\u003etest\r\n        \u003corderingCustomerAddress\u003etest\u003c/orderingCustomerAddress \u003e\r\n        \u003cinstructedAmount\u003etest\u003c/instructedAmount\u003e\r\n        \u003cremittanceInfo\u003etest\u003c/remittanceInfo\u003e\r\n        \u003cpurposeOfPayment\u003etest\u003c/purposeOfPayment\u003e\r\n    \u003c/wsData\u003e\r\n\u003c/webServiceInputDetails\u003e"}}}

Afzaal Ahmad Zeeshan

Один намек: вам тоже нужно заменить некоторые символы. :)

Хороший совет: пожалуйста, используйте библиотеку, которая обрабатывает это, если вы действительно не знаете, что делаете.

0 Ответов