【问题标题】:Convert json string to GET parameters in .net将json字符串转换为.net中的GET参数
【发布时间】:2015-06-11 07:48:01
【问题描述】:

我有这个看起来像这样的 json 字符串:

string jsonString = "[ {"id": "1"}, {"id": "2", "category": "toys"} ]";

引号已在字符串中转义。我想找到一种很好的方法来创建一个看起来与此类似的 json 链接,方法是将其转换为 GET 参数。我只见过真正适用于扁平结构的解决方案。

编辑:我还需要 tp 能够转换回 json 字符串。

【问题讨论】:

  • 你的 jsonString 代表什么对象?您是否从需要三个查询字符串参数的服务器执行复杂的 GET 操作?
  • 我想转换这个字符串(这是一个我 url 解码的 json cookie),我想将它附加到我正在制作的链接的末尾,以便我可以通过电子邮件发送它。然后当用户点击链接时,我转换回 json 并处理数据。

标签: asp.net .net json


【解决方案1】:

初步回答

You could do something like this 转成链接:

using System;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.Text;

public class Program
{
    public static void Main()
    {       
        dynamic obj = JArray.Parse(jsonString);

        var builder = new StringBuilder();
        builder.Append("?id0=" + obj[0].id);
        builder.Append("&id1=" + obj[1].id);
        builder.Append("&category1=" +obj[1].category);

        Console.WriteLine("http://www.something.com" + builder.ToString());
    }

    public static string jsonString = @"[ {""id"": ""1""}, {""id"": ""2"", ""category"": ""toys""} ]";
}

输出:

http://www.something.com?id0=1&id1=2&category1=toys

更通用的后续回答

根据您的评论,here is something more generic:

using System;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.Text;
using System.Collections.Generic;

public class Program
{
    public static void Main()
    {
        JArray array = JArray.Parse(jsonString);

        var builder = new StringBuilder();

        for (var i = 0; i < array.Count; ++i)
        {           
            JToken obj = array[i];
            foreach (JProperty prop in obj)
            {
                var prefix = i == 0 ? "?" : "&";
                builder.AppendFormat("{0}{1}{2}={3}", prefix, prop.Name, i, prop.Value);
            }
        }

        Console.WriteLine("http://www.something.com" + builder.ToString());
    }

    public static string jsonString = @"[ {""id"": ""1""}, {""id"": ""2"", ""category"": ""toys""} ]";
}

输出:

http://www.something.com?id0=1&amp;id1=2&amp;category1=toys

【讨论】:

  • 无论内容结构如何,是否有解决方案可以转换为获取参数?
  • @SatbirKira 是的。有一个解决方案。我在答案中添加了一些内容,尽管它可能不像您需要的那样通用。这实际上取决于您需要处理的情况。它是否需要处理所有可能的 JSON 结构? IE。嵌套在数组中的对象中嵌套的数组等
  • 我认为这很好用。我现在只需要能够从字符串转换回 json 字符串。
  • 也许我以错误的方式问这个问题,我已经序列化了这个 json 字符串,我想通过电子邮件发送一个包含这个序列化链接的链接。我认为获取参数是最好的方法。
【解决方案2】:

好的,回答我自己的问题,这不是解决问题的好方法。 json 字符串可能非常大,如果服务器上超过 2048 个字符,可能会被截断或拒绝。

最好的方法是创建一个 jsonHashTable.json,它将存储您尝试作为键发送的内容的哈希值,以及作为值发送的内容。然后通过电子邮件发送哈希/密钥。让接收哈希的控制器使用该表来查找所需的数据。

【讨论】:

    猜你喜欢
    • 2015-06-24
    • 1970-01-01
    • 2015-06-04
    • 1970-01-01
    • 1970-01-01
    • 2017-11-17
    • 2020-03-20
    • 2014-11-11
    • 1970-01-01
    相关资源
    最近更新 更多