Я пытаюсь сериализовать строку запроса в JSON в C #.Я не получаю ожидаемых результатов и надеюсь, что кто-нибудь сможет объяснить.Почему-то я получаю только запрос «имя», а не «значение».
//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"]
Кто-нибудь знает, как получить строку, похожую на последний пример вывода?Я также попробовал
string json = new JavaScriptSerializer().Serialize(context.Request.QueryString);
и получил те же результаты, что и Newtonsoft Json.
EDIT. Вот окончательный рабочий код, основанный на ответе ниже:
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;
}
}
}