Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Serialize querystring as Json in C#- values don't show up, only the keys. Why?

I'm trying to serialize a querystring to JSON in C#. I'm not getting the results I expected, and am hoping someone can explain. Some reason I'm only getting the query "name" and not the "value".

   //Sample Query:
   http://www.mydomain.com/Handler.ashx?method=preview&appid=1234      


    //Generic handler code:
    public void ProcessRequest(HttpContext context)
    {
        string json = JsonConvert.SerializeObject(context.Request.QueryString);
        context.Response.ContentType = "text/plain";
        context.Response.Write(json);
    }

    //Returns something like this:
    ["method", "appid"]

    //I would expect to get something like this:
    ["method":"preview", "appid":"1234"]

Anyone know how to get a string resembling the latter sample output? I've also tried

string json = new JavaScriptSerializer().Serialize(context.Request.QueryString);

and gotten identical results as the Newtonsoft Json.

EDIT- Here's the final working code based on the answer below:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Script.Serialization;
using Newtonsoft.Json;
using System.Collections.Specialized;

namespace MotoAPI3
{

public class Json : IHttpHandler
{

    public void ProcessRequest(HttpContext context)
    {
        var dict = new Dictionary<string, string>();
        foreach (string key in context.Request.QueryString.Keys)
        {
            dict.Add(key, context.Request.QueryString[key]);
        }

        string json = new JavaScriptSerializer().Serialize(dict);
        context.Response.ContentType = "text/plain";
        context.Response.Write(json);
    }

    public bool IsReusable
    {
        get
        {
            return false;
        }
    }
}
like image 787
Hairgami_Master Avatar asked Feb 22 '23 22:02

Hairgami_Master


1 Answers

Well, Query string is NameValueCollection, and how to serialize NameValueCollection is here: how to convert NameValueCollection to JSON string?

like image 59
Giedrius Avatar answered Apr 29 '23 05:04

Giedrius