JSON字符串格式转换为URL编码c#

irlmq6kh  于 5个月前  发布在  C#
关注(0)|答案(1)|浏览(91)

我有一个基于c#的字符串JSON,有简单的和复杂的对象,像这样:

{
"simple1": "xxx",
"simple2": "xxx",
"complex": {
    "complex_a": [{
        "complex_a_1_1": "aa",
        "complex_a_1_2": "aa"
    }, {
        "complex_a_2_1": 308,
        "complex_a_2_2": "select_option"
    }],
    "complex_b": [{
        "complex_b_1": "aa",
        "complex_b_2": "bb"
    }]
  }
}

字符串
现在我想把它转换成url编码,像这样:

string urlEncoded = "simple1=xxx&simple2=xxx&complex=%7Bcomplex_a=%5B%7Bcomplex_a_1_1=aa(...)%7B%5B%"


我试过

HttpUtility.UrlEncode(JsonConvert.SerializeObject(myJsonString))


但它编码基于json的字符。
有人知道怎么做吗?

sycxhyv7

sycxhyv71#

这可能是因为你正在序列化JSON而不是将其序列化。下面是一个如何加载JSON文件并在.Net Core中对其进行编码的示例。

string json;
using (var r = File.OpenText(@".\contents.json")) {
    json = r.ReadToEnd();
}

var data = JsonConvert.DeserializeObject(json);

var encoded = WebUtility.HtmlEncode(data);

字符串
JSON已经序列化了。序列化意味着将对象转换为字符串。既然它已经是字符串,那么它已经序列化了。
您需要将其转换为对象,然后对其进行URL编码。

相关问题