Convert JSON data to querystring in C# GET request Convert JSON data to querystring in C# GET request json json

Convert JSON data to querystring in C# GET request


If the json object is flat as in your example, then

string json = @"{    ""name"": ""charlie"",    ""num"": 123}";var jObj = (JObject)JsonConvert.DeserializeObject(json);var query = String.Join("&",                jObj.Children().Cast<JProperty>()                .Select(jp=>jp.Name + "=" + HttpUtility.UrlEncode(jp.Value.ToString())));

query would be name=charlie&num=123


I make this code to run in .Net Core:

public static string JsonToQuery(this string jsonQuery)    {        string str = "?";        str += jsonQuery.Replace(":", "=").Replace("{","").                    Replace("}", "").Replace(",","&").                        Replace("\"", "");        return str;    }

Example:

var _baseURI = "http://www.example.com/";var endPoint = "myendpoint";ExampleObjectModel requestModel = new ExampleObjectModel();var requestModelJson = JsonConvert.SerializeObject(requestModel);var url = string.Format("{0}{1}{2}", _baseURI, endPoint, requestModelJson.JsonToQuery());


Try this, work all object, in deep

 public static class ExtensionMethods{    public static string GetQueryString(this object obj, string prefix = "")    {        var query = "";        try        {            var vQueryString = (JsonConvert.SerializeObject(obj));            var jObj = (JObject)JsonConvert.DeserializeObject(vQueryString);            query = String.Join("&",               jObj.Children().Cast<JProperty>()               .Select(jp =>               {                   if (jp.Value.Type == JTokenType.Array)                   {                       var count = 0;                       var arrValue = String.Join("&", jp.Value.ToList().Select<JToken, string>(p =>                       {                           var tmp = JsonConvert.DeserializeObject(p.ToString()).GetQueryString(jp.Name + HttpUtility.UrlEncode("[") + count++ + HttpUtility.UrlEncode("]"));                           return tmp;                       }));                       return arrValue;                   }                   else                       return (prefix.Length > 0 ? prefix + HttpUtility.UrlEncode("[") + jp.Name + HttpUtility.UrlEncode("]") : jp.Name) + "=" + HttpUtility.UrlEncode(jp.Value.ToString());               }               )) ?? "";        }        catch (Exception ex)        {        }        return query;    }}

To use: SomeObject.GetQueryString();