Click here to Skip to main content
15,891,136 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
I want to parse a json string in asp.net with c# without desalinizing. I build the json string using string builder.

I am getting illegal characters exception or so

I want to get the values of encrypted request data and encrypted data in the below json string:

I build the json string using string builder and without deserialization
My json string is as below:
{"webServiceRequest":{"entityDetails":{"entityId":"123","userName":"TEST","password":"TEST123","serviceId":"12344321","requesterWsiRef":"WSI592944205332743307"},"requestDetails":{"encrypyedRequestKeyData":"fye1gPxpyejR35ziHJyAAQ==","encryptedRequestData":"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"}}}


What I have tried:

Core code tried:
I build the json string using string builder and without deserialization.
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();
Posted
Updated 11-Jul-18 1:19am
v4
Comments
F-ES Sitecore 11-Jul-18 7:05am    
Your json isn't an array so JArray.Parse isn't going to work. Use JObject.Parse instead and change the rest of the code as necessary.
ranio 11-Jul-18 7:49am    
I tried to get the encrypyedRequestKeyData and encryptedRequestData json string as below:

But getting object reference issue.
string jsonString = objApi.ReqAPI;
var details = JObject.Parse(jsonString);

objApi.encryptedRequestKeyData = details["encrypyedRequestKeyData"].ToString();
objApi.encryptedRequestData = details["encryptedRequestData"].ToString();


My json string is as below:
{"webServiceRequest":{"entityDetails":{"entityId":"123","userName":"TEST","password":"TEST123","serviceId":"12344321","requesterWsiRef":"WSI592944205332743307"},"requestDetails":{"encrypyedRequestKeyData":"fye1gPxpyejR35ziHJyAAQ==","encryptedRequestData":"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"}}}
F-ES Sitecore 11-Jul-18 8:08am    
Your json only has one property, webServiceRequest. That property is an object with two properties itself, entityDetails and requestDetails. Then inside requestDetails are the properties you want to access. As the json is a tree structure you have to go down the hierarchy to find the data. So get the root webServiceRequest property, then from that get requestDetails, then from that get the properties you want. Just doing

details["encrypyedRequestKeyData"]

isn't going to scan the entire object looking for a property with that name. google "c# traverse nested json" for examples of how to do this.
ranio 11-Jul-18 8:42am    
I passed the encrypted request data and encrypted request key data in asp.net with c#. But while decrypting a json string I am getting as below: There are characters like \u003e,\u003c which is to coming for xml characters

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 11-Jul-18 9:28am    
One hint: You need to replace some characters too. :)

A good hint: Please use a library that handles this, unless you really know what you are doing.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900