2017-04-06 26 views
2

我有一个字符串JSON基于C#中,用简单的和复杂的对象,像这样的:JSON字符串格式的URL编码C#

{ 
"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 charecters。

任何人都知道该怎么做?

回答

1

这可能是您序列化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已经被序列化。序列化意味着将对象变成一个字符串。由于它已经是一个字符串,它已经被序列化了。

您需要将其反序列化为一个对象,然后对其进行网址编码。