0

I'm working on a project where i need to consume AWS API gateway end point in my .NET core API. I'm getting response from AWS api but it's in application/json format.

https://hbgamarapi.azurewebsites.net/GetPressValues

There is no method available in AWS SDK to convert the below response in to JSON.

here is my controller code

var _val = string.Empty;

        
            using (var _client = CreateApiClient.CreateClient(DataUrl.AkranesWheightUser))
            {
                using (var _reponse = await _client.GetAsync(DataUrl.WheightAkranes))
                {

                    _val = await _reponse.Content.ReadAsStringAsync();

                var jsonDoc = Document.FromJson(_val);
                var res = jsonDoc.ToJson();
                
                
                }
            }
        
        return _val;

that's the response from AWS api gateway

{"Items": [{"Thyngd": {"N": "16"}, "Tegund": {"S": "-"}, "Lota": {"N": "18"}, "ID": {"N": "1838"}, "Deild": {"S": "Vignir G. "}, "Dagur": {"S": "20/08/19 10:44:40"}}, {"Deild_Nr": {"N": "307"}, "Lota": {"N": "21"}, "Dagur": {"S": "22/06/20 06:21:53"}, "Thyngd": {"N": "33"}, "Tegund": {"S": "Almennt"}, "ID": {"N": "2289"}, "Deild": {"S": "NORDANFISK"}, "FL_Nr": {"N": "500"}}, {"Thyngd": {"N": "200"}, "Tegund": {"S": "-"}, "Lota": {"N": "0"}, "ID": {"N": "1007"}, "Deild": {"S": "Vignir G. "}, "Dagur": {"S": "10/07/18 08:56:01"}}, {"Thyngd": {"N": "63"}, "Tegund": {"S": "-"}, "Lota": {"N": "18"}, "ID": {"N": "1581"}, "Deild": {"S": "Vignir G. "}, "Dagur": {"S": "09/04/19 07:43:16"}}, {"Thyngd": {"N": "237"}, "Tegund": {"S": "-"}, "Lota": {"N": "0"}, "ID": {"N": "1175"}, "Deild": {"S": "Vignir G. "}, "Dagur": {"S": "03/10/18 10:33:58"}}, {"Thyngd": {"N": "341"}, "Tegund": {"S": "-"}, "Lota": {"N": "0"}, "ID": {"N": "1259"}, "Deild": {"S": "Vignir G. "}, "Dagur": {"S": "13/11/18 08:44:09"}}, {"Thyngd": {"N": "8"}, "Tegund": {"S": "-"}, "Lota": {"N": "18"}, "ID": {"N": "1933"}, "Deild": {"S": "Br\u0153\u00f0sla"}, "Dagur": {"S": "25/09/19 9:34:39"}}, {"Thyngd": {"N": "221"}, "Tegund": {"S": "-"}, "Lota": {"N": "0"}, "ID": {"N": "1091"}, "Deild": {"S": "BIAMAR"}, "Dagur": {"S": "20/08/18 08:03:27"}}, {"Thyngd": {"N": "235"}, "Tegund": {"S": "-"}, "Lota": {"N": "0"}, "ID": {"N": "1303"}, "Deild": {"S": "Br\u0153\u00f0sla"}, "Dagur": {"S": "29/11/18 11:36:58"}}, {"Thyngd": {"N": "32"}, "Tegund": {"S": "-"}, "Lota": {"N": "18"}, "ID": {"N": "1892"}, "Deild": {"S": "Vignir G. "}, "Dagur": {"S": "06/09/19 11:19:52"}}, {"Deild_Nr": {"N": "308"}, "Lota": {"N": "21"}, "Dagur": {"S": "20/05/20 08:02:19"}, "Thyngd": {"N": "63"}, "Tegund": {"S": "Almennt"}, "ID": {"N": "2251"},

Please suggest possible method

Osman Aly
  • 5
  • 2
  • Hi, @usmanali, I already post the code to solve your question. It works on me. If the answer solved your question, please mark it for helping more people. If not, we may be able to continue to explore solutions. Thank you for your time and efforts. – Michael Wang Jul 10 '20 at 09:09
  • @MichelleWang sir, problem is solved thanks for you time. :) – Osman Aly Jul 10 '20 at 10:39

1 Answers1

0

You could use Newtonsoft to deserialize object. Based on the date of your request, use ExpandoObjectConverter to convert complex model from JSON.

First, Install Newtonsoft through NuGet.

    using Newtonsoft.Json;
    using Newtonsoft.Json.Converters;

    
    [Route("/GetPressValues")]
    public async Task<dynamic> GetJsonAsync() 
    {
        var _val = string.Empty;

        dynamic pressValues;

        using (var client = _clientFactory.CreateClient())
        {
            using (var _reponse = await client.GetAsync("https://hbgamarapi.azurewebsites.net/GetPressValues"))
            {

                _val = await _reponse.Content.ReadAsStringAsync();
                var converter = new ExpandoObjectConverter();
                
                //use ExpandoObject whose members can be dynamically added
                pressValues = JsonConvert.DeserializeObject<ExpandoObject>(_val, converter);

            }
        }

        return pressValues.Items;//Here you get List of PressValues
    }

Screenshots of test: enter image description here enter image description here

Michael Wang
  • 3,782
  • 1
  • 5
  • 15