21

形式のサーバー データを送信する 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" }]
}

質問:

これを行うことができる無料のツールはありますか? 私は自分で何かを見つけることができませんでした。それらが存在する場合は、自分で書くよりもむしろそれらを消費したいと思いますが、それに関してはそうします。

AC#/.Net ソリューションが推奨されます。

4

2 に答える 2

25

クエリ文字列とフォーム データを解析するためのユーティリティ クラスを作成しました。次の場所で入手できます。

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);

それがあなたのために働くかどうか私に知らせてください。

于 2013-05-21T13:48:39.220 に答える
12

.NET Framework 4.5 には、url エンコードされたフォーム データを JSON に変換するために必要なすべてが含まれています。これを行うにはSystem.Web.Extension、C# プロジェクトで名前空間への参照を追加する必要があります。その後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 文字列に変換するにはどうすればよいですか?

于 2013-05-23T18:03:38.193 に答える