在.net中将url编码的表单数据转换为JSON的选项有哪些?
本文关键字:选项 JSON 数据 中将 net url 编码 表单 转换 | 更新日期: 2023-09-27 18:13:38
我有一个web请求,正在发送格式为application/x-www-form-urlencoded
的服务器数据。我想把它转换成application/json
。
例子:
url编码的表单数据:
Property1=A&Property2=B&Property3%5B0%5D%5BSubProperty1%5D=a&Property3%5B0%5D%5BSubProperty2%5D=b&Property3%5B1%5D%5BSubProperty1%5D=c&Property3%5B1%5D%5BSubProperty2%5D=d
漂亮版:
Property1=A
Property2=B
Property3[0][SubProperty1]=a
Property3[0][SubProperty2]=b
Property3[1][SubProperty1]=c
Property3[1][SubProperty2]=d
以上数据需要转换为以下JSON数据:
{
Property1: "A",
Property2: "B",
Property3: [
{ SubProperty1: "a", SubProperty2: "b" },
{ SubProperty1: "c", SubProperty2: "d" }]
}
问题:
有没有免费的工具可以做到这一点?我自己也没能找到,如果有的话,我宁愿把它们吃光,也不愿自己写,但如果真要写的话,我会的。
一个c#/。网络解决方案优先
我编写了一个实用程序类,用于解析查询字符串和表单数据。可在以下网址下载:
https://gist.github.com/peteroupc/5619864的例子:
// Example query string from the question
String test="Property1=A&Property2=B&Property3%5B0%5D%5BSubProperty1%5D=a&Property3%5B0%5D%5BSubProperty2%5D=b&Property3%5B1%5D%5BSubProperty1%5D=c&Property3%5B1%5D%5BSubProperty2%5D=d";
// Convert the query string to a JSON-friendly dictionary
var o=QueryStringHelper.QueryStringToDict(test);
// Convert the dictionary to a JSON string using the JSON.NET
// library <http://json.codeplex.com/>
var json=JsonConvert.SerializeObject(o);
// Output the JSON string to the console
Console.WriteLine(json);
让我知道它是否适合你
. net Framework 4.5包含了将url编码的表单数据转换为JSON所需的一切。为了做到这一点,你必须在c#项目中添加对命名空间System.Web.Extension
的引用。之后,您可以使用JavaScriptSerializer
类,它为您提供了进行转换所需的一切。
using System.Web;
using System.Web.Script.Serialization;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
var dict = HttpUtility.ParseQueryString("Property1=A&Property2=B&Property3%5B0%5D%5BSubProperty1%5D=a&Property3%5B0%5D%5BSubProperty2%5D=b&Property3%5B1%5D%5BSubProperty1%5D=c&Property3%5B1%5D%5BSubProperty2%5D=d");
var json = new JavaScriptSerializer().Serialize(
dict.Keys.Cast<string>()
.ToDictionary(k => k, k => dict[k]));
Console.WriteLine(json);
Console.ReadLine();
}
}
}
{
"Property1":"A",
"Property2":"B",
"Property3[0][SubProperty1]":"a",
"Property3[0][SubProperty2]":"b",
"Property3[1][SubProperty1]":"c",
"Property3[1][SubProperty2]":"d"
}
注意:输出不包含换行符或任何格式
来源:如何将查询字符串转换为json字符串?
如果您使用的是ASP。. NET Core 1.0+和JSON。NET你可以这样做:
var reader = new Microsoft.AspNetCore.WebUtilities.FormReader(httpRequest.Body, Encoding.UTF8);
Dictionary<string, StringValues> keyValuePairs = await reader.ReadFormAsync();
var json = JsonConvert.SerializeObject(keyValuePairs);