2017-04-06 133 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已經被序列化。序列化意味着將對象變成一個字符串。由於它已經是一個字符串,它已經被序列化了。

您需要將其反序列化爲一個對象,然後對其進行網址編碼。