我有这个json字符串,看起来像:
$cfg['Servers'][$i]['auth_type'] = 'cookie';
引号已在字符串中转义。我想通过将其转换为GET参数,找到一种很好的方法来创建一个类似于json的json链接。我真的看到了适用于扁平结构的解决方案。
编辑:我还需要能够转换回json字符串。
答案 0 :(得分: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&id1=2&category1=toys
答案 1 :(得分:0)
好的回答我自己的问题,这不是解决问题的好方法。 json字符串可能非常大,如果服务器上超过2048个字符,则可能会被截断或拒绝。
最好的方法是创建一个jsonHashTable.json,它将存储您尝试发送的密钥的哈希值,以及您作为值发送的内容。然后发送电子邮件哈希/密钥。让接收哈希的控制器使用该表来查找所需的数据。