【问题标题】:Query string of Webclient to json string - c#查询Webclient的字符串到json字符串 - c#
【发布时间】:2020-02-06 15:05:26
【问题描述】:

我正在使用以下查询将数据发送到 webAPI。它工作正常。如何在此函数中将我使用的查询字符串转换为 json 字符串?有可能吗?

        WebClient wc = new WebClient();

        wc.Headers.Add("Authorization", "Bearer " + token);
        wc.QueryString.Add("unique_id", (checklist_ID.ToString()));
        wc.QueryString.Add("Question_no", (QNO.ToString()));
        wc.QueryString.Add("Question", t1_question.Text.ToString());
        wc.QueryString.Add("Password", t1_password.Text.ToString());

        var data = wc.UploadValues(url, "POST", wc.QueryString);

         //here I want this Querystring data in below json format 
         // [{"unique_id":"2233","Question_no":"43","Question":"XXXX??","Password":"testpswd"}]

        var responseString = UnicodeEncoding.UTF8.GetString(data);

【问题讨论】:

  • 在 URL 的查询字符串上发送 JSON 没有多大意义。单独发送查询字符串值在请求正文中发送 JSON。 (或者您实际上也可以在请求的正文中发送 url 编码的值(即它们看起来像一个查询字符串)。)。如果您想知道如何使用 WebClient 设置请求正文的内容,请参阅stackoverflow.com/questions/36723705/…
  • 这是用于将数据记录在我发送给 webapi 的文本文件中
  • 好的。你的意思是?这与你问的或我刚刚告诉你的有什么关系?
  • 我正在尝试从 QueryString 中获取这个数组 [{"unique_id":"2233","Question_no":"43","Question":"XXXX??"}]发送。

标签: c# json query-string


【解决方案1】:

使用LinqJsonConvert 得到想要的结果

//Use LINQ to convert the QueryString to Dictionary
var keyValuePairs = (
        from key in wc.QueryString.AllKeys
        from value in wc.QueryString.GetValues(key)
        select new { key, value }).ToDictionary(x => x.key, x => x.value);

//Use Newtonsoft.Json to Serialize the object to json format
Console.WriteLine(JsonConvert.SerializeObject(keyValuePairs));

【讨论】:

  • 有没有办法在这个keyValuePairs中隐藏密码键为“*****”?例如:[{"unique_id":"2233","Question_no":"43","Question":"XXXX??","Password":"******"}]
  • keyValuePairs.FirstOrDefault (kvp=>kvp.Key.Equals ("Password"))?.Value = "******"
猜你喜欢
  • 2014-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-06
  • 1970-01-01
  • 2019-05-10
  • 2020-08-23
相关资源
最近更新 更多